【发布时间】:2014-05-01 03:18:04
【问题描述】:
使用 Laravel 框架,我做了一些函数来生成缩短的 url,该函数(几乎)工作,我必须执行两次 ajax 调用才能返回缩短的 url。
第一个 ajax 调用收到 500 错误。
这是第二次成功的调用:
我很困惑一个函数如何同时工作(但不是真的)。
编辑(附加信息):
/shorten 用于路由:
Route::post('/shorten', array('uses' => 'UrlController@shorten'));
功能:
进一步调用UrlController中的shortcut函数:
public function shorten(){
header('Content-type: text/plain');
$long_url = $_POST['url'];
$link = Link::checkOrShorten($long_url);
return $link->short_url;
}
阿贾克斯:
$(function() {
$('#litlingit').click(function(){
$.ajax({
type: "POST",
data: { url: $('input[name="long_url"]').val() },
dataType: "text",
url: "/shorten"
}).done(function( data ){
$('input[name="long_url"]').val('http://litl.it/'+data);
});
});
});
模块:
public static function checkOrShorten($long_url)
{
$link = new Link;
$link->users_id = NULL;
if (Auth::check())
{
$link->users_id = Auth::user()->id;
}
$link->long_url = $long_url;
$query = DB::select("select short_url from links where long_url = '$long_url'");
if ($query)
{
foreach ($query as $links)
{
$link->short_url = $links->short_url;
}
$url_id = DB::select("select id from links where long_url = '$long_url'");
DB::table('users_links')->insert(array('link_id' => $url_id[0]->id, 'user_id' => $link->users_id, 'privacy' => 0));
}
while(is_null($link->short_url))
{
$link->short_url = str_random(4);
$query = DB::select("select short_url from links where short_url = '". $link->short_url ."'");
if(!$query)
{
$link->save();
$url_id = DB::select("select id from links where short_url = '$link->short_url'");
DB::table('users_links')->insert(array('link_id' => $url_id, 'user_id' => $link->users_id, 'privacy' => 0));
}
}
return $link;
}
【问题讨论】:
-
Laravel 可能正在对帖子信息做一些事情。而不是
$long_url = $_POST['url'];尝试$long_url = Input::get('url');
标签: php jquery ajax laravel laravel-4