3

我正在使用 laravel 来查询 google 的搜索 api。这是执行此操作的代码:

Route::get('google/(:any)', function($query)
{
    $uri = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=".$query;
    $response = Httpful::get($uri)->send();
    $r = json_decode($response); 
    return Response::json($r);
});

这可以通过http://example.com/w/google/queryhere访问

我还尝试在 javascript 中发出多个请求并解析 json。

$.when( $.ajax(google), $.ajax(bing), $.ajax(yahoo)).then(function(resp1, resp2, resp3)
{ 
    var obj = jQuery.parseJSON(resp1);
});

但是,在使用 parseJSON 方法时,我得到了一个意外的语法标记。我不知道我哪里错了。

4

1 回答 1

2

首先,$.ajax在检测到内容类型时自行解析 JSON 响应 - 您无需手动执行此操作。

其次,$.when应用于使用多个参数解析的 Promise 有点模糊。通常,ajax deferred 的回调有 3 个参数:data, textStatus, jqXHR. 然而,合并后的 Promise 会将它们作为一个数组解析(每个延迟一个数组)。

所以改成

$.when( $.ajax(google), $.ajax(bing), $.ajax(yahoo)).then(function(resp1, resp2, resp3){ 
    var obj = resp1[0];
});
于 2013-03-10T15:57:19.247 回答