2013-11-25 27 views
16

Tôi có bộ điều khiển giống như dưới đây:Làm thế nào để vượt qua Nhiều thông số từ cuộc gọi ajax để MVC Controller

public ActionResult Save(string input, string name) { 
    //Some code 
    return PartialView(); 
} 

Và tôi cần một cuộc gọi ajax với phương pháp điều khiển này và vượt qua hai đối số đầu vào và giá trị so

Và cuộc gọi ajax của tôi là như dưới đây:

$.ajax({ 
    url: '/Home/Save', 
    type: 'POST', 
    async: false, 
    dataType: 'text', 
    processData: false, 
    data: "input=" + JSON.stringify(data) + "&name =" + $("#name").val(), 
    success: function (data) { 
    } 
}); 

tôi không thể vượt qua giá trị cho các tham số tên .. giá trị trong tham số tên đang trở thành null .. xin hãy giúp tôi .. Cảm ơn trước

+0

thể trùng lặp của [jquery Ajax cuộc gọi - thông số dữ liệu không được truyền cho MVC điều khiển hành động] (http://stackoverflow.com/questions/2002163/jquery-ajax-call-data-parameters-là-không-được-pass-to-mvc-controller-action) – xdumaine

Trả lời

21

Bạn đang tạo một POST HTTP, nhưng cố chuyển các tham số bằng cú pháp chuỗi truy vấn GET. Trong POST, dữ liệu được chuyển thành các tham số có tên và không sử dụng cú pháp param=value&foo=bar. Sử dụng phương pháp ajax jQuery cho phép bạn tạo một đối tượng javascript với các thông số được đặt tên, như vậy:

$.ajax({ 
    url: '/Home/SaveChart', 
    type: 'POST', 
    async: false, 
    dataType: 'text', 
    processData: false,  
    data: { 
     input: JSON.stringify(IVRInstant.data), 
     name: $("#wrkname").val() 
    }, 
    success: function (data) { } 
}); 
-3
$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "ChnagePassword.aspx/AutocompleteSuggestions", 
    data: "{'searchstring':'" + request.term + "','st':'Arb'}", 
    dataType: "json", 
    success: function (data) { 
    response($.map(data.d, function (item) { 
     return { value: item } 
    })) 
    }, 
    error: function (result) { 
     alert("Error"); 
    } 
}); 
+2

Vui lòng thêm một số bình luận về cách trả lời câu hỏi này và sử dụng định dạng thích hợp – avalancha

0

tôi đã làm điều đó với sự giúp đỡ từ câu hỏi này

jquery get querystring from URL

vì vậy hãy để thấy cách chúng tôi sẽ sử dụng chức năng này

// Read a page's GET URL variables and return them as an associative array. 
function getUrlVars() 
{ 
    var vars = [], hash; 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
    for(var i = 0; i < hashes.length; i++) 
    { 
     hash = hashes[i].split('='); 
     vars.push(hash[0]); 
     vars[hash[0]] = hash[1]; 
    } 
    return vars; 
} 

và bây giờ chỉ sử dụng nó trong Ajax call

"ajax": { 
    url: '/Departments/GetAllDepartments/',      
    type: 'GET',      
    dataType: 'json',      
    data: getUrlVars()// here is the tricky part 
}, 

thats tất cả, nhưng nếu bạn muốn biết how to use this function hay not send all the query string parameters trở lại actual answer

1

Ngoài gửi bởi @xdumain, tôi thích tạo ra đối tượng dữ liệu trước khi ajax gọi để bạn có thể gỡ lỗi.

var dataObject = JSON.stringify({ 
        'input': $('#myInput').val(), 
        'name': $('#myName').val(), 
       }); 

Bây giờ sử dụng nó trong ajax gọi

$.ajax({ 
      url: "/Home/SaveChart", 
      type: 'POST', 
      async: false, 
      dataType: 'json', 
      contentType: 'application/json', 
      data: dataObject, 
      success: function (data) { }, 
      error: function (xhr) { }   )}; 
Các vấn đề liên quan