Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 对Laravel4的Ajax请求返回200 ok,但方法总是返回fail_Jquery_Laravel_Laravel 4 - Fatal编程技术网

Jquery 对Laravel4的Ajax请求返回200 ok,但方法总是返回fail

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

我正在做一个简单的请求到一个LaravelWeb服务

这是控制器中的响应:

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;
});