如何将有效的Json对象从PHP文件返回到jQuery文件

如何将有效的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(

我做了尽可能简单的塞纳里奥,以确保我没有犯愚蠢的错误

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(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助手在使用太久之后真的让你哑口无言谢谢,就这样。