1

JSON オブジェクトを AJAX 呼び出しに返すはずの PHP 関数がありますが、代わりに文字列を返しています。これは、AJAX 呼び出しから呼び出している PHP です。

<?php
  echo json_encode(array("error", 0, "Success!"));
?>

これがAJAX呼び出しです。

    $.ajax({
        type: "POST",
        url: "../api/login.php",
        data: { id: username, password: password },
        success: function(response) {
            alert( "Data Saved: " + response );
            $("#login_username").val("");
            $("#login_password").val("");
        }
      });

この関数が返されたら、コンソールで応答にアクセスしようとしましたが、これが起こります

response
> "["error",0,"Success!"]"
response[0]
> "["
4

3 に答える 3

4

オブジェクトが必要な場合はdataType:json、ajax 設定で を指定します。また、サーバーから無効な JSON が送信された場合に、解析エラーでエラーが発生することも保証されます。ほとんどの場合、jquery が MIME タイプ自体を判別できるようにする content-type ( application/json; charset=utf-8) が応答ヘッダーに指定されていdataTypeないため、(無効な JSON の場合) オブジェクトまたはエラーが確実に返されるように指定します。

  $.ajax({
    type: "POST",
    dataType:'json'
    url: "../api/login.php",
    data: { id: username, password: password },
    success: function(response) {
        alert( "Data Saved: " + response );
        $("#login_username").val("");
        $("#login_password").val("");
    }
  });
于 2013-10-17T02:01:15.223 に答える
2

あなたの実装は、jQuery、または jQuery のモックアップを使用しているようです。jQuery を使用していない場合は、問題の解決策をさらに共有させていただきます。

データ型を追加

 $.ajax({
        dataType: 'json',
        type: "POST",
        url: "../api/login.php",
        data: { id: username, password: password },
        success: function(response) {
            alert( "Data Saved: " + response );
            $("#login_username").val("");
            $("#login_password").val("");
        }
      });

問題は、デフォルトで jQuery が文字列を想定していることです。

var foo = "bar";
foo[1] === "a"; // true

ドキュメント: jQuery.ajax

于 2013-10-17T02:00:40.610 に答える
1

あなたのajaxcallにパラメータを追加してください

$.ajax({
    type: "POST",
    url: "../api/login.php",
    data: { id: username, password: password },

    dataType: "json" //-< add this param.

    success: function(response) {
        alert( "Data Saved: " + response );
        $("#login_username").val("");
        $("#login_password").val("");
    }
  });

http://api.jquery.com/jQuery.post/

于 2013-10-17T02:08:35.977 に答える