0

HTML、jQuery Mobile、jQuery、Cordova を使用してアプリを作成しています。私の要件は、リモート サーバーを呼び出してアプリからユーザーを認証することです。私はローカルホストの WAMP スタックを開発しています。

私のjQueryは以下の通りです。

$.ajax({
    type: 'POST',
    url: 'http://localhost/server/',
    crossDomain: true,
    data:{appkey:'1234567',action:'authenticate', username: u, password :p},
    dataType: 'jsonp',
    async: true,
    success: function (data){
        console.log(data);
     },
     error: function (jqXHR, textStatus, errorThrown) {
         alert("Invalid Username or Password");
         window.location = "index.html";
     }
});

リモート通話のURLは以下です。JQuery は自動的に ?callback= をリモート URL に追加します。これは、データ型が jsonp であるためです。これで問題ありません。

localhost/server/?callback=jQuery18306688079617451876_1383495199431…4567&action=authenticate&username=fdf&password=fdfdf&_=1383495208981

リモート URL からの応答は、Chrome デベロッパー コンソールで次のようになります。

{"success":"false"}

サーバーの PHP 部分では、以下のコードを使用して json オブジェクトを返しています。

header('Content-type: application/json');
echo json_encode($araryVal);

すべてが完璧であるように見えますが、コードのブレークポイントが ajax 呼び出しの成功セクションに到達しません。エラーセクションで常に発生します。

開発者コンソールにエラー メッセージが表示されます。

Uncaught SyntaxError: Unexpected token :

JsonLint は、json が有効であると言います。私が愚かなことをしていることを教えてください。

4

2 に答える 2

2

あなたのデータ型は JSONP ではないと思います。ただの JSON です。JSONP の場合、コンテンツ タイプは「application/javascript」である必要があり、応答テキストは、コールバック パラメータでサーバーに提供された JavaScript 関数で返される JSON オブジェクトをラップする必要があります。

(実際には、おそらく PHP が未定義の変数 araryVal に関する通知を発行している可能性があります。それは arrayVal であってはなりませんか? :)

于 2013-11-03T17:16:32.790 に答える