如何将有效的Json对象从PHP文件返回到jQuery文件
我做了尽可能简单的塞纳里奥,以确保我没有犯愚蠢的错误 HTML/JS文件(使用jQuery 1.6.x,但我也在JSFIDLE 1.9.x上尝试了它如何将有效的Json对象从PHP文件返回到jQuery文件,php,ajax,json,jquery,jsonp,Php,Ajax,Json,Jquery,Jsonp,我做了尽可能简单的塞纳里奥,以确保我没有犯愚蠢的错误 HTML/JS文件(使用jQuery 1.6.x,但我也在JSFIDLE 1.9.x上尝试了它 $.ajax({ dataType: "jsonp", url: 'http://example.com/api/test.php', success: function(data){ //Never reached alert('Success'); console.log(
$.ajax({
dataType: "jsonp",
url: 'http://example.com/api/test.php',
success: function(data){
//Never reached
alert('Success');
console.log(data);
}
});
test.php-PHP5.3.x
<?php
header("Content-Type: application/json; charset=utf-8", true);
echo json_encode(array("test" => "test"));
?>
我在ajax调用中弄乱了php文件的头和一些参数。什么都不起作用。我真的很困惑为什么这个简单的场景不起作用。问题出在php方面,因为将url更改为其他源(例如)工作正常。我感觉这是一个PHP配置,但我不知道去哪里看。不要使用
application/json
作为JSONP的内容类型。相反,使用application/javascript
。这并不是真的必要,但JSONP响应应该是有效的javascript,而裸词对象并不是语法错误。您需要这样做:
// JS
url: "http://example.com/api/text.php?callback=?"
//php
echo $_GET['callback'] . '(' . json_encode(array("test" => "test")) . ')';
通过jQuery获得的关于JSONP的更多信息可以在中找到。不要使用
application/json
作为JSONP的内容类型。相反,使用application/javascript
。这并不是真正必要的,但是JSONP响应应该是有效的javascript,并且裸词对象不会因此产生语法错误。您需要做些什么例如:
// JS
url: "http://example.com/api/text.php?callback=?"
//php
echo $_GET['callback'] . '(' . json_encode(array("test" => "test")) . ')';
有关通过jQuery的JSONP的更多信息,请访问直接使用浏览器打开url时,您是否得到正确的响应?直接使用浏览器打开url时,您是否得到正确的响应?哦…对…那些ASP.NET MVC jQuery助手使用太久后,真的让您哑口无言!:)谢谢,就是这样。哦。。。正确的。。。那些ASP.NET MVC jQuery助手在使用太久之后真的让你哑口无言谢谢,就这样。