【问题标题】:How to send and retrieve data from web method using JQuery Ajax Call? [duplicate]如何使用 JQuery Ajax Call 从 Web 方法发送和检索数据? [复制]
【发布时间】:2013-07-15 13:47:11
【问题描述】:

我有一个文本框和旁边的按钮。我想通过 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:

  Name:    <input id="name" type="text" /> 
<input id="Button1" type="button" value="button" onclick="CallWM();"/></div>
    </form>

网络方法:

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

【问题讨论】:

  • 您收到的控制台错误消息是什么?
  • Uncaught ReferenceError: response is not defined
  • 好的,正如达林所说,使用 JSON.stringify(name)
  • @Delphian 我按照 Darin 的建议进行了更改,但我收到控制台错误“未捕获的 ReferenceError:未定义响应”
  • 函数“CallWM”中的“msg”有什么用,调用时没有传递值

标签: c# javascript jquery asp.net ajax


【解决方案1】:

替换:

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 方法中存在异常一样,服务器可能根本不会返回任何 JSON。

【讨论】:

  • 只是为了进一步的启发,请参阅What is the difference between JSON and Object Literal Notation?
  • Darin 是正确的,jQuery.ajax() 方法没有 failure 回调。
  • 抱歉回复晚了,我做了更改,但我收到控制台错误“ncaught ReferenceError: CallWM is not defined”
  • 这段javascript代码写在哪里?它在一个单独的 javascript 文件中吗?您是否在 WebForm 中引用了此文件?此外,您必须在按钮之前引用它。此外,由于您使用的是 jQuery,请不要忘记在您的自定义 javascript 代码之前引用它。
  • 在同一个文件的head标签内。
【解决方案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);
            }
        });
    }

【讨论】:

  • Same error Uncaught ReferenceError: response is not defined 我想我们是在错误的地方寻找问题。我知道这一定很愚蠢,我正在尝试找出导致此错误的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 2015-11-30
相关资源
最近更新 更多