2012-07-26 5 views
2

조금 도움이 필요합니다. 오늘 jQuery가 벽에 부딪 칠 때까지 부드럽게 진행되었습니다. 여러 폼 (개별 라인 항목)을 AJAX를 통해 즉시 편집 할 수 있도록하려고합니다. 텍스트 제출 링크 또는 일종의 제출 단추가 있습니다. 문제는, AJAX를 통해 양식을 제출할 수 있지만 양식의 데이터가 없으면 제출할 수 있습니다. 즉, 제출을 누르면 요청을 보내지 만 쿼리 문자열은 보내지 않습니다. 누가 누락 된 부분을 파악하도록 도와 줄 수 있습니까?jquery ajax 여러 양식 제출

 $('.submitLineChanges').click(function() { 
      var formID = $(this).closest('form').attr('ID') 
      datastring = $(formID).serialize(); 
      $.ajax({ 
        type:'POST', 
        url: 'update_ajax.asp', 
        data: datastring, 
        success: function(response) { 
         alert("Success " + id) 
        //$('#ContactForm').find('.form_result').html(response); 
       }//end ajax options 
      });//end ajax 
      return false; 
     });//end of click function 

그리고 내 양식 :

<form id="line-item-<%= intRecID %>-form" class="submitLineForm"> 
     <input type="hidden" name="UpdateLineItem" value="true" /> 
     <span class="edit" id="edit-line-<%= intRecID %>" style="display: none;"> 
      <span class="quantity"><input name="part_qty" id="part_qty_<%= intRecID %>" type="text" value="<%=FormatNumber(rs("quote_part_qty"),0)%>"></span> 
      <span class="partno"><input name="part_no" id="part_no_<%= intRecID %>" type="text" value="<%=rs("quote_part_id")%>"></span> 
      <span class="descrip"><Textarea name="part_descrip" type="text" id="descrip<%= intRecID %>" rows="3"><%=rs("quote_part_descrip")%></Textarea></span> 
      <span class="sellprice">$<input name="part_sale" id="part_sale_<%= intRecID %>" type="text" value="<%=FormatNumber(rs("quote_part_sale"),2)%>"></span> 
      <span class="margin" id="emargin_<%= intRecID %>"><%=margin%></span> 
      <span class="cost"><strong>Cost: </strong>$<input name="part_cost" id="part_cost_<%= intRecID %>" type="text" value="<%=FormatNumber(cost,2)%>"></span> 
      <span class="wt"><strong>Weight: </strong><input name="part_wt" id="part_wt_<%= intRecID %>" type="text" value="<%=FormatNumber(rs("quote_part_wt"),2)%>"></span> 
      <span class="update"><input type="button" value="Save Changes" class="submitLineChanges" /></span> 
     </span> 
    </form> 

당신이 말할 수 있어야으로

, 나는 ASP에서 이것을 실행 해요

여기 내 JQuery와있다. 양식은 기본적으로 장바구니의 각 광고 항목에 대한 것입니다. 페이지의 본질 때문에, 나는 모든 정보를 편집하기 위해 별도의 페이지를 갖고 싶지 않습니다. 이게 효과가있는 것 같지만 터널 비전을 통해 뭔가 빠졌을 가능성이 있습니다.

양식은 각 행에 대한 것이므로 모든 양식을 제출할 필요는 없습니다. 단 하나만 제출하십시오.

감사

답변

4

변경

datastring = $(formID).serialize(); 

var datastring = $('#' + formID).serialize(); 

에 당신은 ID 선택기를 사용하여 # 접두사를 사용해야합니다. 또한 var 키워드를 사용하지 않고 아무 이유없이 전역 네임 스페이스를 오염시킵니다.

또는 더 나은 ... 당신은 form을 발견하고 한 번에 모든 것을 serialises

var datastring = $(this).closest('form').serialize(); 

var formID = $(this).closest('form').attr('ID'); 
var datastring = $('#' + formID).serialize(); 

대체 할 수 있습니다!

그 제안에 대해 @MikeBrant에게 감사드립니다.

+1

또는 단순히 두 줄을 datastring = $ (this) .closest ('form')에 결합하십시오. –

+0

@MikeBrant 좋은 제안 .... 대답에 덧붙여 :-) – ManseUK

+0

나는 그것을 놓쳤다, 감사한다. .. 매우 많은 수정과 그것을 고치는 것을 잊었다. 어떤 데이터도 통과 시키지는 않지만 여전히 문제가 있습니다. 이견있는 사람? – hatrickwah