如何使用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:
根据您的评论我理解您的问题尚未解决,所以试试吧
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。