以下是我对其他域名进行的简单Ajax调用:
<script>
$.ajax({
url: 'url?callback=?',
dataType: 'jsonp',
success: function (data) {
alert(data[0].DeviceName); //Just to display
}
})
},
})
</script>
我的成功函数永远不会被触发,但Fiddler会返回一个有效的JSON。
原始输出:
如何在成功函数中显示返回的结果?
提前谢谢!
答案 0 :(得分:0)
服务器返回JSON数据,而不是您期望的JSONP。
这可能是因为您指定了一个时髦的callback
参数。尝试更改:
url: 'url?callback=?'
仅'url'
或其他任何内容,但没有回调参数。我非常确定jQuery会为你提供一个回调参数。
如果这不起作用,则服务器可能无法返回JSON-P数据。但显然它支持普通的JSON。所以你可能只是改变你的通话,以便你接受JSON数据:
dataType: 'json'
仅供参考:JSON-P实际上是一段JavaScript代码,它在浏览器中调用回调函数,提供JSON数据作为参数。
答案 1 :(得分:0)
所以,你的问题是服务器没有返回有效“JSONP”。我将用一个例子来解释。
服务器需要知道两件事:
在下面的facebook图形API调用中,我告诉facebook前面提到的两件事,在两个参数“format”和“callback”中
http://graph.facebook.com/adrian.salazar.cs?format=JSONP&callback=mything
然后,Facebook会给我一个有效的JSONP回复。 /**/ mything({
"id": "714291966",
"first_name": "Adrian",
"gender": "male",
"last_name": "Salazar",
"link": "https://www.facebook.com/adrian.salazar.cs",
"locale": "en_US",
"name": "Adrian Salazar",
"username": "adrian.salazar.cs"
});
但是,什么是有效的JSOP响应?
假设服务器希望您将jsonp回调指定为名为“jpcallback”的参数
然后你的服务器必须使用jpcallback中传递的参数包装正常的JSON响应,作为函数调用...
因此,JSONP格式的GET http://myserver.com/getdevices?jpcallback=randomJsonpCallback的原始答案是:
randomJsonpCallback([{ Id: 222, Name: 'aaa' }, { Id: 333, Name: 'bbb' }])