2009-08-20 6 views
1

私はid =#REQUESTFORMの複数のフォームを持っています。データの送信時に正しい情報を取得するために、私は最も近いコマンドを使用します。しかし、私は成功ajaxコールバックでそれを使用しようとしたとき、同じコマンドが機能しません。サーバーの応答を正しい形式で受信して印刷するには、どうすればよいですか?成功で最も近いコマンドを使用するajaxコールバック

$("[name='respond']").live('click', function() { 
     $("[name='action']").val($(this).val()); 
      $.ajax({ 
       type: "POST", 
       data: $(this).closest('#REQUESTFORM').serialize(), 
       url: "content/requests/index.cs.asp?Process=RespondRequests", 
       success: function(output) { 
       $(output).closest('#REQUESTFORM').html(output) 
       }, 
       error: function(xhr){ 
        alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText); 
       } 
      }); 
+0

同じIDのページに複数の要素があるとしますか?それはhtmlの仕様に違反しているので、あなたの問題の原因かもしれません。 – seth

答えて

2

成功関数の出力は、サーバーから受け取ったデータを参照していますが、私はそれがあなたのDOMに関連付けられていることはわかりません。あなたが#REQUESTFORM参照する非常に単純なトリックがあります:

...live('click', function() { 
    $("[name='action']... 
    // REFERENCE TO the REQUESTFORM 
    var requestForm = $(this).closest('#REQUESTFORM'); 

    $.ajax({ 
     type: "POST", 
     data: requestForm.serialize(), 
     ... 
     success: function(output) { 
      requestForm.html(output); 
     ... 

JS関数スコープがあるのでにそれが定義されて、ないそれが使用さは、VaRのrequestFormは成功機能が利用できるようになりますイベントバインディング機能も終了します。

IDで参照しているフォームの最後の1つは、DOM全体に固有のものとみなして、実際には最も近いものではなく$( '#REQUESTFORM')を使用することがあります。

+0

うわー、それ!ありがとうございました!!! – Efe

関連する問題