1

テーブルにデータを送信するモーダルダイアログフォームがあります。送信の成功/失敗に関するフィードバックをユーザーに提供したいのですが、成功ハンドラーが起動していません。

私のコードは

$.ajax({
  type: "POST",
  url: "includes/phpscripts.php?action=submitWiki",
  data: {"name": location, "location": locationName, "text": locationText, "user": userId},
  beforeSend: function(x){
    if (x && x.overrideMimeType){
      x.overrideMimeType("application/json;charset=UTF-8");
    }
  },
  async: false
}).done(function(data){
  if (data == "failure"){
    $("#submissionFailure").dialog("open");
  } else {
    $("#submissionSuccess").dialog("open");
    var count= 3;
    var id= setInterval(function(){
      count--;
      if (count == 0)
        $("#submissionSuccess").dialog("close");
    }, 1000);
  }
});

別のバージョンでは、if/elseブロックが次のようにdone定義されていました

success: function(data){
  if (data == "failure"){
    $("#submissionFailure").dialog("open");
  } else {
    $("#submissionSuccess").dialog("open");
    var count= 3;
    var id= setInterval(function(){
      count--;
      if (count == 0)
        $("#submissionSuccess").dialog("close");
    }, 1000);
  }
}

Firebugでは、リクエストからの戻りがechoステートメントによるものであることがはっきりとわかりますsuccessが、success関数はスキップされています。行に直接ブレークポイントを設定しましたdoneが、すべてスキップされます。

さらに、投稿はデータベースに記録されています。

4

2 に答える 2

1

デフォルトでHTML/StringまたはXMLになっている欠落している「dataType」は、頭の中でどちらかを思い出せないかもしれませんが、JSONを使用しているとしましょう。dataType:がJSONに設定されていない場合、バックエンドのフィードバックは有効であり、基本的に無視されます。だから下type: "POST"に置くdataType:"json"

于 2012-08-12T19:41:00.547 に答える
0

Chris ^が言ったように、データ型を追加してから、この行を変更します

data: {"name": location, "location": locationName, "text": locationText, "user": userId}

それに

data: {name: "location", location: "locationName", text: "locationText", user: "userId"}

引用符は、変数でない限り、2番目のパラメーターの前後に配置する必要があります。最初のパラメータはそのままにしておくことができます。

于 2012-08-12T20:50:40.780 に答える