Jquery 对Laravel4的Ajax请求返回200 ok,但方法总是返回fail
我正在做一个简单的请求到一个LaravelWeb服务 这是控制器中的响应:Jquery 对Laravel4的Ajax请求返回200 ok,但方法总是返回fail,jquery,laravel,laravel-4,Jquery,Laravel,Laravel 4,我正在做一个简单的请求到一个LaravelWeb服务 这是控制器中的响应: data = array( 'name' => 'Dummy', 'size' => 'XL', 'color' => 'Blue' ); return Response::json($data); 使用邮递员,我可以看到一切看起来都很好: 网址: 然后我转到一个简单的javascript调用,如: $.getJSON("http://localhost/myapi/public/conte
data = array(
'name' => 'Dummy',
'size' => 'XL',
'color' => 'Blue'
);
return Response::json($data);
使用邮递员,我可以看到一切看起来都很好:
网址:
然后我转到一个简单的javascript调用,如:
$.getJSON("http://localhost/myapi/public/content", function(json) {
console.log("log " + json.name);
});
或
Firefox控制台返回“200OK”,但Javascript总是报告错误
问题出在哪里
解决方案:
默认情况下,不会发送Laravel响应
header('Access-Control-Allow-Origin: *');
刚刚添加,现在我正在正确获取json数据。另一个解决方案是在App/filters.php中添加
App::after
中间件
App::after(function($request, $response)
{
$response->headers->set('Access-Control-Allow-Origin', '*');
// You may also require these additional method calls
$response->headers->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
$response->headers->set('Access-Control-Max-Age', '1000');
$response->headers->set('Access-Control-Allow-Headers', 'X-Requested-With, Origin, X-Csrftoken, Content-Type, Accept');
return $response;
});
另一个解决方案是在App/filters.php中添加一个
App::after
中间件
App::after(function($request, $response)
{
$response->headers->set('Access-Control-Allow-Origin', '*');
// You may also require these additional method calls
$response->headers->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
$response->headers->set('Access-Control-Max-Age', '1000');
$response->headers->set('Access-Control-Allow-Headers', 'X-Requested-With, Origin, X-Csrftoken, Content-Type, Accept');
return $response;
});
主机名是不同的主机名吗?这可能是CORS安全类型问题。您的JSON输出无效。这就是为什么mehod在200 OK状态下仍然失败的原因。嗨,JSON输出似乎是有效的(在JSONlint上测试过),我无法捕捉到任何使用chrome或firefox调试的错误代码。我在本地主机上做所有的事情。我得到的唯一错误是,在调用url后,它会触发错误函数。您浏览器中的url是什么?如果URL中没有index.php,这是巧合吗?还是您设置了mod_rewrite首选项以这样工作?主机名是不同的主机名吗?这可能是CORS安全类型问题。您的JSON输出无效。这就是为什么mehod在200 OK状态下仍然失败的原因。嗨,JSON输出似乎是有效的(在JSONlint上测试过),我无法捕捉到任何使用chrome或firefox调试的错误代码。我在本地主机上做所有的事情。我得到的唯一错误是,在调用url后,它会触发错误函数。您浏览器中的url是什么?如果URL中没有index.php,这是巧合吗?还是您设置了mod_rewrite首选项以这样工作?
App::after(function($request, $response)
{
$response->headers->set('Access-Control-Allow-Origin', '*');
// You may also require these additional method calls
$response->headers->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
$response->headers->set('Access-Control-Max-Age', '1000');
$response->headers->set('Access-Control-Allow-Headers', 'X-Requested-With, Origin, X-Csrftoken, Content-Type, Accept');
return $response;
});