2013-12-20 33 views
0

我已经返回了正确显示在控制台中的JSONP数据。试图通过jQuery.ajax访问返回的JSONP数据()

group({ 
    "blah": "blah", 
    "blahblah": "blahblah", 
    "blahblahblah": "blahblahblah" 
}); 

这是我的ajax调用。

$.ajax({ 
    type: 'GET', 
    url: 'test.php', 
    dataType: 'jsonp', 
    cache: false, 
    jsonpCallback: 'group', 
    statusCode: { 
    404: function() { 
     alert("page not found"); 
    } 
    }, 
    success: function(group){ 
    console.log(group); 
    $('#theTest').append(group.name); 
    }, 
    error: function(response1, response2, response3){ 
    console.log("Fail!"); 
    console.log(response1); 
    console.log(response2); 
    console.log(response3); 
    } 
}); 

JSON包裹着'group'。当我尝试访问这些数据时,我无法这样做。

  • group.name在控制台中有一个值时,它不会显示在我把它放在网站上。
  • 组[0]返回摹
  • 组[1]返回r
  • 组[2]返回Ø

我很困惑,为什么一切它被这种方式返回。有人能指引我朝着正确的方向吗?

+0

为什么你设置'jsonpCallback:“group''? –

+0

这是一个很好的问题。我不确定。我之前设置了回调:'group',但是移动了它。我的PHP文件正在寻找回调。 – Dave

+0

您不需要手动设置回叫或其名称。当你做'dataType:'jsonp'时,jQuery向你的URL添加一个'GET'参数,并且生成一个回调的名字:'$ _GET ['callback']'。您应该在PHP脚本返回时使用它:'echo $ _GET ['callback']。'('。json_encode($ data)。')';'。 –

回答

1

你的Ajax请求是不正确,应该是这样的

$.ajax({ 
    type: 'GET', 
    url: 'test.php', 
    dataType: 'jsonp', 
    cache: false, 
    jsonpCallback: 'group', 
    statusCode: { 
    404: function() { 
     alert("page not found"); 
    } 
    }, 
    success: function(group){ 
    console.log(group); 
    $('#theTest').append(group.name); 
    }, 
}); 

dataTypecachecallback不作为数据字段和数据类型传递应该是jsonp

+0

进行此更改后,运行时出现错误。具体来说,我得到:parsererror和SyntaxError {} – Dave

+0

@Dave哪行代码? – Musa

+0

response2和response3 – Dave

0

的错误是在你的服务器副作用。 JSONP的工作方式是,指定一个将传递给GET请求的已知回调参数。在服务器端,您需要提取该参数以获取JSON填充的封装方法调用。

在你的榜样与jsonpCallback: '集团',你的服务器端需要:

$methodName = $_GET['group'] 
    $response = $methodName . '(' . <YOUR JSON RESPONSE> . ');' 
    echo $response