我有一个文本框和旁边的按钮。我想通过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: <input id="name" type="text" />
<input id="Button1" type="button" value="button" onclick="CallWM();"/></div>
</form>
WEB方法:
[WebMethod]
public static string UpperWM(string name )
{
var msg=name.ToUpper();
return (msg);
}
答案 0 :(得分:4)
替换:
data: '{name: ' + name + '}',
使用:
data: { name: JSON.stringify(name) },
确保正确编码。现在您发送以下有效负载:
{name:'some value'}
这显然是无效的JSON有效负载。在JSON中,所有内容都应该是双引号:
{"name":"some value"}
这就是为什么你绝对不应该使用一些字符串连接手动构建JSON但是使用内置方法(JSON.stringify
)。
附注:我不确定failure
方法是否理解有$.ajax
的回调。所以:
$.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方法中存在异常一样,服务器根本不会返回任何JSON。
答案 1 :(得分:2)
根据您的评论,我了解您的问题尚未解决,因此请尝试此操作
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);
}
});
}