如何使用JQuery Ajax调用发送和检索来自Web方法的数据?
如何使用JQuery Ajax调用发送和检索来自Web方法的数据?
我有一个文本框和一个按钮,并且它们是相邻的。我想通过Jquery ajax调用将文本框的内容发送到webmethod,并获取相同内容的大写值,然后在弹出窗口中显示出来。到目前为止,我有这段代码但是它不起作用。
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:
姓名:
WEB METHOD:
[WebMethod] public static string UpperWM(string name ) { var msg=name.ToUpper(); return (msg); }
从这段对话中,可以得出问题的原因是在发送数据时,使用了错误的JSON格式,导致无效的JSON负载。解决方法是使用JSON.stringify
方法来正确地编码数据。
具体而言,需要将
data: '{name: ' + name + '}',
替换为
data: { name: JSON.stringify(name) },
以确保正确的编码。原来发送的负载是
{name:'some value'}
这显然是一个无效的JSON负载。在JSON中,所有的内容都应该用双引号括起来,所以正确的格式应该是
{"name":"some value"}
另外,还需要注意的是,在错误的回调函数中,将response.d
属性移除,因为如果Web方法出现异常,服务器很可能根本不会返回任何JSON。
在进一步的讨论中,提到了failure
回调函数不是$.ajax
方法所理解的,建议使用error
回调函数。
最后,有一个关于CallWM
未定义的控制台错误的问题,经过进一步询问,确认了可能是代码位置或引用顺序的问题。
问题的原因是错误的JSON格式,解决方法是使用JSON.stringify
方法正确编码数据,并注意回调函数的正确使用和引用顺序的问题。