2012-09-28 69 views
0

我有一個操作方法,它有兩個字符串數組作爲參數,我發佈這個操作方法與AJAX post方法,我有一個問題,在控制器上我有兩個數組數據相同 但我正在與不同的數據使得兩個陣列(一個包含其它代碼包含名稱) 下面我的代碼Ajax Post發送兩個數組作爲參數

public ActionResult SectionBook(string[] cs,string[] cname) 
{ 
} 

var CourseSection=new Array(); 
var CourseName=new Array(); 
$('a p-button').live('click', function() {  
     var schoolCourseId = $(this).attr('id'); 
     CourseSection.push(schoolCourseId); 
     CourseName.push($(this).html().split("(")[0]);   
    }); 


$('#btnSubmit').live('click', function() { 

$.ajax({ 
      type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      url: '/MyController/SectionBook', 
      //   dataType: 'json', 
      data: $.toJSON(CourseSection, CourseName), 
      success: function (result) {     
       window.location.href = '/MyController/SectionBooks' 
      }, 
      error: function (xhr, ajaxOptions, thrownError) { 
       alert(xhr.status); 
       alert(thrownError); 
      }, 
      async: false, 
      cache: false 
     }); 

}); 

我已調試的JS代碼和兩個陣列在此具有不同的值,但在控制器CS和CNAME包含相同的數據

回答

1

我認爲問題在於toJSON方法只接受一個參數而忽略其餘參數。所以做 $ .toJSON(CourseSection,CourseName) 如果包裹在2個數組和對象然而,像這樣的

var CourseSection = new Array(); 
var CourseName = new Array(); 
CourseSection.push("cs1"); 
CourseSection.push("cs2"); 
CourseSection.push("cs3"); 

CourseName.push("cn1"); 
CourseName.push("cn2"); 
CourseName.push("cn3"); 

var newObj = { 
cn:CourseName, 
cs:CourseSection   
}; 

你只創建與英寸 傳遞的第一陣列的值的JSON對象然後newObj對象轉換爲JSON與

JSON.stringify(newObj) 

$.toJSON(newObj) 

你應該ABL e從控制器中使用JavascriptSerializer

0

試試這個

var data = { courseSection:CourseSection.toString(),courseName:CourseName.toString()}; 
      $.ajax({ 
       url:'/MyController/SectionBook', 
       type:'GET', 
       data:data, 
       async:false, 
       success:function(data) 
       { 
        window.location.href = '/MyController/SectionBooks' 

       } 
      }); 
     } 


In Controller 
public ActionResult SectionBook(string courseSection,string courseName) 
{ 

} 

確認befor ajax調用你的數組是否包含不同的值。在json中,您應該在密鑰對中傳遞值,並在控制器中將這些值作爲逗號分隔符。

+0

是這兩個數組中檢索值從ajax調用他們有不同的值,但在這一行$ .toJson他們有相同的值 –

+0

謝謝,我試過這個,但它顯示內部錯誤500和不擊中控制器 - –

+0

感謝您回覆我,我已編輯我的答案,請你試試這個,讓我知道。 – Shivkumar

0

問題是在data: $ .toJSON(CourseSection,CourseName),` 它填補了他們的第一個元素檢查出的文檔

1

嘗試沒有contentType:'application/json; charset = utf-8',你不會在服務器端的任何地方指定它,所以mvc會嘗試在發佈後使​​用來自請求主體的defalut綁定。所以只需將js對象作爲數據參數傳遞,jQuery將在請求的主體中使用必需的對象表示形式執行常見的post請求。

$.ajax({ 
     type: 'POST', 
     url: '/MyController/SectionBook', 
     data: {cs: CourseSection, cname: CourseName}, 
     success: function (result) {     
      window.location.href = '/MyController/SectionBooks' 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      alert(xhr.status); 
      alert(thrownError); 
     }, 
     async: false, 
     cache: false 
    }); 
+0

嗨,我試過這個,但現在這兩個數組都顯示爲空 –

+0

爲我工作一個簡單的字符串 – Anytoe