我正在尝试将简单的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>
现在我的问题是我无法发送输入文本并将其收回。任何人都可以指出我在这里犯的错误。
答案 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() + '}',