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

时间:2013-10-01 15:37:59

标签: php ajax json jquery jsonp

我做了最简单的参议院,以确保我没有犯下一个愚蠢的错误

HTML / JS文件(使用jQuery 1.6.x,但我也在jsfiddle上尝试过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 - PHP 5.3.x

<?php
header("Content-Type: application/json; charset=utf-8", true);
echo json_encode(array("test" => "test"));
?>

错误返回

Uncaught SyntaxError: Unexpected token : 

我搞砸了php文件的标题和ajax调用中的一些参数。没有任何效果。我真的很困惑为什么这个简单的场景不起作用。问题出在PHP方面,因为将URL更改为其他源(例如http://echo.jsontest.com/test/test)是有效的。我觉得这是一个PHP配置,但我不知道在哪里看。

1 个答案:

答案 0 :(得分:1)

不要将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")) . ')';

the jQuery documentation

中提供了有关通过jQuery实现JSONP的更多信息