使用ajax调用向webmethod发送和接收输入文本

时间:2012-04-22 19:49:39

标签: jquery asp.net ajax vb.net webmethod

我正在尝试将简单的ajax脚本用于webmethod,如下所示:

  <script type="text/javascript">
        $(document).ready(function () {
         $("#btnretreive").click(function () {
            $.ajax({
                 type: "POST",
                 url: "Default.aspx/Gettext",
                 data: {inputtext: $('#sometext').val()},
                 contentType: "application/json; charset=utf-8",
                 dataType: "json",
                 success: function(msg) {
                     $("#Result").text(msg.d);
                   }
             });
         });
     });
 </script>

这是我的网络方法:

 <WebMethod()> _
    Public Shared Function Gettext(ByVal inputtext As String) As String
           Return inputtext
    End Function

这是我的HTML部分:

<input id="sometext" type="text" />
<input id="btnretreive" type="button" value="button" />
<div id="Result"></div>

现在我的问题是我无法发送输入文本并将其收回。任何人都可以指出我在这里犯的错误。

3 个答案:

答案 0 :(得分:1)

您需要在Web方法中使用ScriptMethod属性才能返回Json。

<ScriptMethod(ResponseFormat:=ResponseFormat.Json)>

更多信息:http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.aspx

注意:您必须保留WebMethod属性,如MSDN中所示。

此外,您需要将传递给WebMethod的Json对象转换为字符串,例如:

data: JSON.stringify({inputtext: $('#sometext').val()}),

希望它有所帮助。

答案 1 :(得分:0)

由于您将contentType指定为应用程序JSON jQuery可能将数据发布为json,而asp.net无法识别,因此没有接收参数值,webmethods在querystring中接收参数,尝试删除contentType,只留下dataType,也尝试删除'POST'作为类型

答案 2 :(得分:0)

从内存来看,我认为数据部分需要在一个字符串中。所以该行将是

data: '{inputtext : ' + $('#sometext').val() + '}',