1

愚かな間違いを犯さないようにするために、可能な限り単純なシナリオを作成しました

HTML/JS ファイル(jQuery 1.6.x を使用していますが、1.9.x の jsfiddle でも試しました)

$.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呼び出しのいくつかのパラメータをいじりました。何も機能しませんでした。この単純なシナリオが機能しない理由について、私は本当に混乱しています。URL を別のソース ( http://echo.jsontest.com/test/testなど)に変更すると機能するため、問題は PHP 側にあります。PHPの設定だと思いますが、どこを見ればいいのかわかりません。

4

1 に答える 1

1

application/jsonJSONP のコンテンツ タイプとして使用しないでください。代わりに、を使用してapplication/javascriptください。これは実際には必要ありませんが、JSONP 応答は有効な JavaScript である必要があり、裸の単語オブジェクトではないため、構文エラーになります。次のようなことをする必要があります:

// JS
url: "http://example.com/api/text.php?callback=?"

//php
echo $_GET['callback'] . '(' . json_encode(array("test" => "test")) . ')';

jQuery を介した JSONP の詳細については、jQuery のドキュメントを参照してください。

于 2013-10-01T15:43:39.263 に答える