我做了最简单的参议院,以确保我没有犯下一个愚蠢的错误
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配置,但我不知道在哪里看。
答案 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")) . ')';
中提供了有关通过jQuery实现JSONP的更多信息