2011-10-21 18 views
-1

同じページに異なるデータセットに送信する2つの関数があります。 1つの関数は正常に機能しますが、もう1つはポストデータを送信しません。コードは次のとおりです。Jquery .postが別の関数で動作していない

function sortManufacturer() { 
     showLoading(); 
     var orderList = ''; 
     orderedNodes = document.getElementById("sortable_list").getElementsByTagName("li"); 
      for (var i=0;i < orderedNodes.length;i++) { 
       orderList += orderedNodes[i].getAttribute('recordid') + ','; 
      } 
$.post('save_sort_order.php', {type:'manufacturer', order: orderList}, 
     function() { 
     hideLoading(); 
     $(".saved").dialog("open"); 
     } 
);} 
    function editManufacturer() { 
     showLoading(); 
     var fields = $("form#edit_manufacturer").serializeArray(); 
$.post('save_sort_order.php', {manActive: fields}, 
     function(data) { 
     hideLoading(); 
     $(".saved").dialog("open"); 
     } 
);} 

これは機能しません。アラートは成功し、アラートはエラーをスローしません。ちょうどページを再読み込みします。:

function editManufacturer() { 
    $.ajax({ 
    type: "POST", 
    url: "save_sort_order.php", 
    data: "hey", 
    success: function(){ 
     alert("success"); 
    }, 
    error: function(request, status, error) { 
     var result = JSON.parse(request.responseText); 
     alert(result.message); 
    } 
}); 
    } 

ポストデータは、Firebug under the Netパネルで送信されていません。最初の関数は正常に動作し、2番目の関数は送信されません。私が警告(「後」)を入れたら;関数の終了の直前の$ .postの後にうまくいきます。

+2

どの機能が動作しないのですか? – Crontab

+1

火かき棒を調べて、リクエストが送信されたかどうか確認しましたか?それが決して送信されない、または応答が得られないという意味ですか? firebugを使用して、問題のある行の間にconsole.log( "some identifier")を入れて、実行される内容と実行されない内容を調べます。 – Whetstone

+1

「うまくいかない」とはどういう意味ですか?あなたは何を期待していますか、あなたは何を得ていますか? –

答えて

1

error handler$.postを追加することから始めます。返されるメッセージを参照してください。 jQuery AJAX error handling

変更方法その弾力のためのあなたのAjax構文 - : も

http://getfirebug.com/network

http://getfirebug.com/wiki/index.php/Net_Panel

編集

スレッド参照し、要求と応答を確認するためにfirebug net panelを見てあそこ。その読みやすい方法。

はまた、あなたがさらにmanActiveフィールドに包む名前/値ペアの

error: function(request, status, error) { 
     var result = JSON.parse(request.responseText); 
     alert(result.message); 
    }); 
+0

POSTのネットパネルの下にリクエストが表示されないので、送信していません。 – Kyle

+0

編集した回答を試してください – Jags

+0

助けてくれてありがとう。私はあなたが言ったことを試みたが、アラートがポップアップしても、成功したものも、エラーのあるものもなかった。私は、元の投稿を見てみるための新しい機能を更新しました。 – Kyle

0

serializeArray()リターンアレイとエラーハンドラを交換してください。ちょうどfieldsを渡すとうまくいくはずです。

EDIT:OPへの質問にも対応しています。私がこの問題に気づく可能性はありましたが、まず最初にデバッグ作業を行う必要があります。 FirebugやFiddlerで投稿データを調べるなど。 「うまくいかない」というのは実際には問題の説明ではありません。

+0

それは問題ではない、私はそれにデバッグの時間を入れた。アラートを追加すると( ""); $ .POSTの直後で、関数の閉じ括弧の直前では正常に動作します。ただし、画面に空白の警告が表示されます。 $ .POSTの後にアラートがあれば、すべてのデータが送信され、返されます。 – Kyle

0

各行のオブジェクトにアラートを設定します。ちょっと退屈ですが、通常は動作します。 nullまたは間違ったデータ型のオブジェクトを使用していて、jQueryがそうでないと予想しているオブジェクトを使用している場合、それは黙って失敗します。 getElementsByIdが正常に動作していること、orderListが期待どおりであることなどを確認してください。また、PHPでも失敗する可能性があります。

関連する問題