1

私はこのjQueryスクリプトを持っています

var dataString = "class_id="+class_id;

$.ajax({
    type: "POST",
    url: "page.php",
    data: dataString,
    success: function (msg) {
        //stuck here
    },
    error: function () {
        showNotification("error", "Could not process at this time, try again later."); //this is a function created by me (which works fine so I just left the code in here)
    }
});

私のPHP出力はこのようなものです

echo '{status:1,message:"Success"}';

また

echo '{status:0,message:"Failure"}';

私がjQueryの部分でやろうとしているsuccess: function(...)のは、ステータスが0か1かをチェックしてからメッセージを表示することです。

私がやろうとしたのは

success: function(text) {
   if(parseInt(text.status) == 1) {
      alert(text.message); // this is the success, the status is 1
   } else {
      alert(text.message); // this is the failure since the status is not 1
   }
}

これは機能しませんでした。ステータスが 1 であったにもかかわらず、else ステートメントのみを出力していました。

4

4 に答える 4

3

PHPは無効なJSONを生成しており、最初にJSONとして扱うようにブラウザに指示する適切なコンテンツタイプヘッダーを設定する兆候を示していません。したがって、最初にPHPを修正します。

header('application/json');
echo json_encode(Array("status" => 1, "message" => "Success"));

それで:

success: function (msg) {
    alert(msg.message)
},
于 2012-04-06T17:56:13.483 に答える
2

使用することもできます

PHP

echo json_encode(Array("status" => 1, "message" => "Success"));

JS

コールバック関数の使用内

success: function (msg) {
    $.parseJSON(msg);
    alert(msg.message);
}

parseJSON、PHPによって返された/エコーされたjson文字列をjsonオブジェクトに変換します。

于 2012-04-06T18:00:35.707 に答える
1

$ .ajaxで指定しない場合、応答ハンドラーに渡されるタイプ'json'データは文字列として扱われます。'json' dataTypeパラメーターを指定すると、次のものを使用できます。

msg.status 

msg.message

ヒントとして、phpでjson_encode関数を使用してjson出力を生成することをお勧めします。

于 2012-04-06T18:01:40.150 に答える
1

以下のようなものを試してください、

$.ajax({
    type: "POST",
    url: "page.php",
    data: dataString,
    dataType: 'json',
    success: function (msg) {
        if (msg.status == 0) {
          alert("Success " + msg.message);
        } else if (msg.status == 1) {
          alert("Error " + msg.message);
        }
    },
    error: function () {
        showNotification("error", "Could not process at this time, try again later."); //this is a function created by me (which works fine so I just left the code in here)
    }
});
于 2012-04-06T17:55:19.737 に答える