2013-04-13 81 views
1

我试图使用jsonp显示数据,但由于某种原因它不想在网页上显示。在网页上显示jsonp数据

function test() 
{ 
    $.ajax(
    { 
     url: "http://localhost/api/company", //web api is hosted on iss 8 
     dataType: 'jsonp', 
     success: function (data) 
     { 
      $("#test").append(data[5].Company); 
     } 
    }); 
} 

请注意从服务器返回的数据就好了。我通过谷歌浏览器执行测试功能并检查网络选项卡中的响应来测试此功能。

我在这里做错了什么?

+0

JSON的外观如何? –

+0

你的意思是回应? –

+0

是的。它的结构是什么?你阵列中至少有6个元素吗?另外,你的代码是否碰到了'append'行? –

回答

2

我建议你才能有是怎么回事很好地理解阅读填充(JSONP)JSON和JSON之间一个很好的解释在这里: Can anyone explain what JSONP is, in layman terms?

首先您的呼叫需要支持URL JSONP。即使它们生成JSON,并非所有的webservices,rest接口等都支持它

其次,您需要包含一个?callback =?在您的网址,以便从jquery使用JSONP。

您添加?callback =?你的网址,例如:

var url = 'URL?callback=?'; 
    $.getJSON(url, function(jsonp){ 
    $("#jsonp-response").html(JSON.stringify(jsonp, null, 2)); 
    }); 

您还需要测试,如果实际的服务支持JSONP,你能做到这一点打开浏览器中的Web服务与回调=东西添加

http://localhost/api/company?callback=callbackID 

如果API支持JSONP,你应该在你的浏览器中看到类似的输出:

callbackID({ 
    JSON DOCUMENT HERE 
}); 

在下一节中,我包括链接显示什么标准仅适用于JSON的反应是,那叫一个JSONP respo是的。

活生生的例子使用Twitter API

当您使用的getJSON发送请求,并有?回调=? jquery自动添加一个回调id。

的网络服务器得到的请求,如和包数据了问心无愧回调名称(这种情况下,“A”):

http://search.twitter.com/search.json?since_id=91770779645124609&q=test&callback=a 

如果你尝试没有你只能看到JSON回调同样的请求哪些不能被跨网站消耗:

http://search.twitter.com/search.json?since_id=91770779645124609&q=test 
+0

嗨Meewok感谢重播。你知道我怎么能包括回调? –

+0

我相信Web服务被配置为接受JSONP请求,因为它正在返回数据(响应可以在网络选项卡中看到)。 –

+0

我已更新回复以回答您的问题。如果webservice支持JSONP,那么当您通过浏览器访问?callback =时,输出应该会改变。如果你想要,你也可以提供web服务的URL,我可以看看。 –