2012-02-17 3 views
0

지난 몇 시간 동안 자바 스크립트와 jquery를 작성하는 데 많은 시간을 보냈습니다. html 테이블 데이터를 반복하고 서버에 다시 제출하십시오.

는 기본적으로 나는 배열에 그 정보를 추가하고 서버에 다시 게시 않을 경우 속성이 TD 내에 존재하는 경우 검사하는 테이블을 통해 루프를 시도하고

내 코드 (나는 그것이 될 수 확신 더 좋음)

 $("#save-changes").click(function() { 
     var param = []; 
     var table = $("#products-grid > .t-grid-content > table tbody tr").each(function (i) { 
      //find checkboxes using class 
      var td = ($(this).find("td:nth-child(2)").find(".cb")); 
      var attr = $(td).attr('data-item'); 

      if (typeof attr !== 'undefined' && attr !== false) { 
       console.log(td); 
       param.push({ "itemId": attr, "productId": td.val() }); 
      } 
     }); 
     console.log(param); 

     $.ajax({ 
      url: '@Url.Action("ApplyProduct")', 
      data: param, 
      type: 'POST', 
      success: function (e) { 

이제 배열을 서버로 다시 전달하려고 시도하고 있습니다. 서버가 이해할 수있는 매개 변수로 서버에 다시 데이터를 보내려면 어떻게해야합니까?

도움이 될 것입니다.

답변

0

은 아약스 호출에 두 개의 매개 변수

dataType: "json", 
data: JSON.stringify(param) 

를 추가합니다.

itemId 및 productId라는 두 개의 int 속성 int를 갖는 객체 서버 측을 작성한 다음 게시하는 객체의 배열을 취하는 JsonResult 경로를 만듭니다 (이 경우 사용자의 ApplyProduct가됩니다).

+0

에 다시 문자열을 분할 할 수있는 서버 측에 키 - 값 JSON 다음

$.ajax({ url: '@Url.Action("ApplyProduct")', data: { param : param }, type: 'POST', 

같은 데이터 옵션을 지정해야합니다 stringify IE를 지원하는 플러그인, 이것은 크로스 브라우저 호환되지 않습니다. 좋은 방법이지만 IE 용 플러그인이 필요합니다. –

+0

으로 Spalsh-x가 브라우저에 따라 json.stringify가 작동하도록 js lib가 필요할 수 있다고 말하면 함수가 존재하는지 테스트하고 추가 lib를 포함하면 테스트합니다. 새로운 IE에서 기본적으로 지원됩니다. – kmcc049

+0

아, 당신은 아마이 개체의 배열은 경로 메서드 서명 – kmcc049

0

배열을 서버로 보낼 수 없으면 문자열이어야합니다.

당신은로 구분 각각의 값 문자열을 만드는 것이

param.join(";"); 

처럼 함께 배열에 가입 할 수;

또한 당신은 당신이를 사용하지 않는 한 당신이 배열

$param = explode(";",$_POST['param']); 
+0

빌어 먹을 kmcc의 대답은 더 나은 매개 변수를 호출해야합니다 :) – Aaike

+0

도와 줘서 고마워요 :) –

관련 문제