2011-11-07 26 views
8

tôi đã nhận lỗi này khi tôi gửi 2 tham số từ jQuery để WebMethod và sử dụng nhiều params"Message": "không hợp lệ cuộc gọi dịch vụ web, giá trị còn thiếu cho tham số: u0027

{"Message":"Invalid web service call, missing value for parameter: \u0027haha\u0027.","StackTrace":" at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"} 

Trong jQuery:.

$(".txtNoiDung").focusout(function() { 
     $.ajax({ 
      type: "POST", 
      url: "QuanLyTin.aspx/test1cai", 
      data: JSON.stringify({ hahas: $(this).val(),tuans: "hahaha" }), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       $("#vltxtNoiDung").text(msg.d) 
      }, 
      error: function (xhr, reason, ex) { 
       alert(reason); 
      } 
     }); 
    }); 

Trong mã đằng sau

[WebMethod()] 
     public static string test1cai(string haha, string tuan) 
     { 
      return "Hi, "+haha + tuan; 
     } 

Làm thế nào tôi có thể giải quyết nó? Cảm ơn các bạn.

Trả lời

32

dịch vụ của bạn được chấp nhận thông số tên hahatuan, nhưng JavaScript được thông qua trong hahastuans. Tháo "s" từ cả hai:

data: JSON.stringify({ haha: $(this).val(),tuan: "hahaha" }), 

Ngoài ra, hãy nhớ rằng các tham số nhiều trận đấu giữa khách hàng- và server-side với trường hợp nhạy cảm.

4

Tên thuộc tính đối tượng JavaScript của bạn phải khớp với tên của các tham số trên phương thức dịch vụ web để chúng có thể bị ràng buộc một cách thích hợp. Bạn hiện có:

{ hahas: $(this).val(),tuans: "hahaha" } 

mà có lẽ nên là:

{ haha: $(this).val(), tuan: "hahaha" } 
0

Bạn nên đi qua các tham số phương pháp tương tự từ các chức năng trong mã behinedto, trong Ajax của bạn gọi

dữ liệu: "{ 'haha': '" + "dữ liệu của bạn" + 'tuan':' "+ "dữ liệu của bạn" + "'}"

  • không nên có bất kỳ dấu cách như 'tuan'
Các vấn đề liên quan