4

Syntax error: invalid labelクロスドメインでAJAXによってRESTサービスを呼び出すときに問題に直面しています。私の回答は{ "d": 12000 }、「d」の二重引用符でエラーが表示されることです。

私のコードは次のようなものです:

$.ajax({
    type: 'post',
    url: 'http://localhost/test.svc/getnumber',
    dataType: "jsonp",
    crossDomain: true,
    contentType: "application/jsonp",
});

どうすれば問題を解決できますか?

4

3 に答える 3

3

サーバーが JSONP 値を返さないため、機能しません。リクエスト クエリ文字列の値を使用しcallback、関数呼び出しを含む JavaScript コードの一部を返す必要があります。

たとえば、$.ajax()は にリクエストを送信する/path/to/script?callback=jsonp_12123123ため、サーバーは以下を返す必要があります。

jsonp_12123123({"d": 12000})

PHP では、以下を使用してこれを実現できます。

<?php

// DO NOT USE AS IS, SANITIZE $_GET!!!
echo $_GET['callback'], '(', json_encode(array(
    'd' => 12000,
)), ')';

contentType: 'application/jsonp'また、 ;は必要ありません。サーバーに送信されますが、データを投稿しているので役に立ちません。

于 2013-01-22T13:31:46.203 に答える
0

コードを次のように編集します。

$.ajax({
    type: 'post',
    url: 'http://localhost/test.svc/getnumber',
    dataType: "jsonp",
    contentType: 'application/json'
});

に間違いがありurl仕様により、コンテンツタイプはである必要がありますapplication/json

于 2013-01-22T13:23:50.913 に答える
0

これを使用してください。URL の形式が正しくありません (double //)。また、 にも問題があります。次contentTypeのようにする必要がありますapplication/json

$.ajax({
    type: 'post',
    url: 'http://localhost/test.svc/getnumber',
    datatype: "jsonp",
    contentType: 'application/json',
});
于 2013-01-22T13:25:06.903 に答える