5660


クロスドメインでjsを実行するためにlocalhostでテスト中です。

html側

[code]

    jQuery.ajax({
        type:'GET',
        url:Url,
        dataType: "jsonp",
        crossDomain: true,
        success : function (res) {
            alert("success");
        },
        error : function(res){
            alert("error");
        }
    });
    
[/code]

php側

[code]

    <?php
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept');
    echo json_encode( 123456789 );
    
[/code]

上記コードを実行すると `"error"` というダイアログが表示されます。  
一番シンプルな形にしているつもりですが、どこに原因があるのかつかません。  
echo を文字列にしたり、配列にしたりしてみましたが状況変わらずでした。

`dataType: "jsonp` を削除すると`"success"`が表示されます。

アドバイスお願いします。


CC BY-SA 3.0
2015-01-31T09:48:34.073
5659
2015-01-31T11:36:33.987
2015-01-31T11:36:33.987
845
7980
question
php ajax
jQuery クロスドメインのAjaxでエラーになってしまいます。


php側の実装はJSONPではなくJSONですね。

JSONPなら

[code]

    callback(123456789);
    
[/code]

というJavaScriptを返すべきです。


CC BY-SA 3.0
2015-01-31T10:02:49.710
5660
2015-01-31T10:02:49.710
5750
5659
answer


下記のようにすることで動作しました。アドバイス感謝です。

html側

[code]

        jQuery.ajax({
          type:'GET',
          url:Url,
          dataType: "jsonp",
          jsonpCallback: 'callback',
          success : function (res) {
            alert("success");
        },
        error : function(res){
            alert("error");
        }
    });
    
[/code]

php側

[code]

    <?php
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept');
    echo "callback(".json_encode( "123456789" ).")";
    
[/code]


CC BY-SA 3.0
2015-01-31T10:25:12.850
5662
2015-01-31T10:25:12.850
7980
5659
answer