在Ajax Data参数中使用Val()

时间:2014-02-06 22:40:10

标签: jquery asp.net ajax

我正在使用文字HTML注入在ASP.NET应用程序中构建我的控件。为此,我更具体地使用x-editable(http://vitalets.github.io/x-editable/)库。在下面的示例中, jQ 是我在服务器端构建的字符串, id 是表示控件ID的字符串,方法是我传递给该事件的方法。

 jQ += "$('#" + id + "').editable({" +
                      "url: function (params) {" +
                      "return $.ajax({" +
                      "type: 'POST'," +
                      "url: 'foo.asmx/" + method +"'," +
                      "data: JSON.stringify({" + id + ":$('#" + id + "').val()})," +
                      "contentType: 'application/json; charset=utf-8'," +
                      "dataType: 'json'," +
                      "processData: false," +
                      "async: true," +
                      "cache: false," +
                      "timeout: 10000," +
                      "success: function (response) {" +
                      "  alert(response);" +
                      " }," +
                      " error: function () {" +
                      "alert('Error in Ajax');" +
                      "}" +
                      "});" +
                      "}" +
                      "});";

这实际上一切都很棒!除此之外,在这一行:

"data: JSON.stringify({" + id + ":$('#" + id + "').val()})," 

相应webmethod中的参数始终为空。但是,如果我用常量替换它,就像这样:

"data: JSON.stringify({" + id + ":'11111')})," 

我在后端看到了11111。我尝试了第一种方式的单引号,没有效果。不知道我做错了什么。

1 个答案:

答案 0 :(得分:1)

我没有使用过那个库,但看起来你正在检测一个<a>元素,因此点击它时可以编辑它的文本。因此,您应该使用.text()来获取值,而不是.val()