0

使用 jQuery 执行 ajax 请求时,我不确定如何将变量添加到发送到服务器的数据中。使用静态字符串发送请求可以正常工作:

$("#btnSubmit").click(function () {

                var inputtext = $("#txtInput").val();

                $.ajax({
                    type: "POST",
                    url: "Webform1.aspx/Function",
                    data: "{'ans':'hello'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (msg) {
                        alert(msg.d);
                    }

                });
            });

上面调用 .net 函数,然后生成一个带有响应字符串的 msgbox。

如何用上面的 inputtext 变量等变量替换硬编码字符串 'hello'。

以下不起作用并导致与 json 解析相关的 500 错误:

{'ans':inputtext}

{ans:输入文本}

{"ans":inputtext}

(ans 是函数参数的名称)

编辑:

为了处理请求服务器端,我只使用函数的 .net WebMethod 属性,它与上面示例中的硬编码字符串请求一起使用,但在使用数据传递变量时仅返回整个 html 页面:{ans:inputtext} :

    [System.Web.Services.WebMethod]
    public static string Function(string ans)
    {

        return ans;
    }
4

3 回答 3

2

这应该工作:

$("#btnSubmit").click(function () {
    var inputtext = $("#txtInput").val();

    $.ajax({
        type: "POST",
        url: "Webform1.aspx/Function",
        data: {ans: inputtext},
        dataType: "json",
        success: function (msg) {
            alert(msg.d);
        }
    });
});

只要#btnSubmit不是表单中的实际提交按钮。

于 2013-02-15T00:05:00.023 回答
0

您的数据选项的值看起来很奇怪。我通常通过以下方式进行操作:

 $.ajax({
                    type: "POST",
                    url: "Webform1.aspx/Function",
                    data: {'ans':'hello'},
                    contentType: "application/json; charset=utf-8",

                    success: function (msg) {
                        alert(msg);
                    }

                });

我删除了 dataType:“json”,我认为 json 无论如何都是默认的

于 2013-02-15T00:05:13.807 回答
0

如果您使用提交事件而不是按钮单击,那么获取对表单的引用会更容易,然后在表单上调用 .serialize ,这将包括所有表单字段。只要输入的 [name] 属性是“ans”,那么它将以具有该名称的 json 结尾。我的示例假设您将“answerForm”类添加到您想要此行为的表单中。

.on('submit', '.answerFornm', function (e) {
  $.ajax({
  ...
    data: $(this).serialize(),
    contentType: "application/json; charset=utf-8",
  ...
于 2013-02-15T00:08:11.113 回答