1

我做了最简单的情景,以确保我没有犯愚蠢的错误

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 配置,但我不知道在哪里看。

4

1 回答 1

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 文档中提供了有关通过 jQuery 实现 JSONP 的更多信息

于 2013-10-01T15:43:39.263 回答