1

私はこれらのことで遊んでいますが、コールバック関数には応答変数が1つしかないようです。

$.post(link, $("#form").serializeArray(), sendFormResponse);

ここで、sendFormResponse関数は魔法を実行します...

ただし、操作する変数(応答)は1つだけです。

私は少なくとも2つ必要でした

この.postメソッドで2つの変数を返すことができれば:1)status =(ok、error、adjustなど)2)statusMessage(またはresponse)=(その他の文字列)

両方のw/cはphp側から生成されます、それは素晴らしいでしょう..coz私は私のphpの応答に応じて何をすべきかを評価することができます..

4

3 に答える 3

3

成功方法でデータを確認する必要があります。通常、自分で検証できる標準の応答jsonオブジェクトを設定します。

$.post('ajax/test.php', function(response) {
  if (response.success) {
      alert(response.data.key1);
      // will display "value1"
  } else {
      alert(response.errorText);
  }
});

test.php

<?php
// so ajax client can interpret content appropriately
header('Content-Type: application/json');

// hide all php notices/warnings/errors 
// (you really should be logging them)
// ** Any text other than the json encoded string
// will break the clients parsing abilities **
ini_set('display_errors', false);


$response = array(
    "success" => true,
    "errorText" => "",
    "data" => array(
        "key1" => "value1"
    )
);

echo json_encode($response, JSON_FORCE_OBJECT);
?>
于 2013-01-12T15:30:10.093 に答える
2

コールバックに渡される(または応答で返される)引数は、無制限のプロパティを持つことができるオブジェクト、または複数の要素を含む配列にすることができます。

于 2013-01-12T15:18:50.650 に答える
2

PHPからJSONエンコードされた配列を送信します

echo json_encode(array('success' => 'ok', 'data1' => $data1, 'data2' => $data2)); //etc.

次に、成功フラグとJavascriptのデータの両方を参照できます。

$.post(link, $("#form").serializeArray(), function(data) {
   if (data.success == 'ok') {
       alert('data1 = ' + data.data1);
   } 
   else {
      alert (data.error);
   }
});
于 2013-01-12T15:22:57.547 に答える