如何使用JQuery Ajax Call从Web方法发送和检索数据?

我有一个文本框和旁边的按钮。 我想通过Jquery ajax调用webmethod发送文本框的内容,并获取相同的大写值并在alert中显示。 到目前为止,我有这个代码,但它不起作用。

JAVASCRIPT:

function CallWM() { var name = $('#name').val(); RealCallWM(name); } function RealCallWM(name) { $.ajax({ url: 'Register.aspx/UpperWM', type: 'POST', contentType: 'application/json; charset=utf-8', data: { name: JSON.stringify(name) }, success: OnSuccess(response), error: function (response) { alert(response.responseText); } }) }; 

HTML:

  Name:  

WEB方法:

  [WebMethod] public static string UpperWM(string name ) { var msg=name.ToUpper(); return (msg); } 

根据您的评论我理解您的问题尚未解决,所以试试吧

  function RealCallWM(name) { $.ajax({ type: "POST", url: "Default.aspx/UpperWM", data: JSON.stringify({ name: $('#name').val() }), contentType: "application/json; charset=utf-8", dataType: "json", async: true, success: function (data, status) { console.log("CallWM"); alert(data.d); }, failure: function (data) { alert(data.d); }, error: function (data) { alert(data.d); } }); } 

更换:

 data: '{name: ' + name + '}', 

有:

 data: { name: JSON.stringify(name) }, 

确保正确编码。 现在您发送以下有效负载:

 {name:'some value'} 

这显然是无效的JSON有效负载。 在JSON中,所有内容都应该是双引号:

 {"name":"some value"} 

这就是为什么你绝对不应该使用一些字符串连接手动构建JSON但使用内置方法( JSON.stringify )的原因。

旁注:我不确定$.ajax方法是否理解了一个称为failure的回调。 所以:

 $.ajax({ url: 'Register.aspx/UpperWM', type: 'POST', contentType: 'application/json; charset=utf-8', data: { name: JSON.stringify(name) }, success: OnSuccess(response), error: function (response) { alert(response.responseText); } }); 

另请注意,在您的错误回调中,我删除了response.d属性,就好像您的Web方法中存在exception一样,服务器根本不会返回任何JSON。