<form id="form1" runat="server"> <div id="div1"> <input type="text" id="text1" name="text1" /> <input type="text" id="text2" name="text2" /> <input type="text" id="text3" name="text3" /> </div> <input type="button" id="btnTest" value="点击我" /> <input type="button" id="btnGet" value="AJAXGET测试" /> </form>
上面的是我的前台代码
<head runat="server"> <title></title> <script type="text/javascript" src="Scripts/jquery-1.4.1.js"></script> <script type="text/javascript"> $(function () { $("#btnTest").click(function () { $.ajax({ url: "WebForm2.aspx/Test", type: "POST", dataType: "json", data: {"str":"我是","str2":"XXX"}, contentType: "application/json; charset=utf-8", }) }) }) </script> </head>
这上面的是js代码
[WebMethod()] public static string[] Test() { string value1 = v1; string value2 = v2; string[] list = {value1,value2}; return list; }
这上面的是WebForm2.aspx里的一个方法
我现在想把ajax data(也就是上面红色部分的数据在后在获取)
问题:
如果我把
data: {"str":"我是","str2":"XXX"}, 这句加上的话,就有异常 当触发点击事件时并不能转到webform2页面
如果不加
data: {"str":"我是","str2":"XXX"}, 这一句 如果不加的话 当触发点击事件时就可以转到webform2页面
请问我这是哪里错了
data: "{str:我是,str2:XXX}",
public static string[] Test(string str,string str2) {}
str与str2 是Test方法的参数,Test都没有加形参当然没办法调用 Test(string str,string str2)这样就行了
加了也没有用,你能不能写一个给我?
@生活还是要继续: 用FireBug 查看下HTTP请求吧 会有提示信息的
具体异常是什么?
试试后台 Test() 方法同命名空间下增加一个参数类 public class DataArg { string str {get;set;} string str2 {get;set;} } Test()签名改为: public static string[] Test(DataArg arg) { //... }
感谢,真可以
可以尝试查看详细的错误提示,然后根据提示错误信息修改,
$.ajax({ url: ""WebForm2.aspx", data: {"str":"我是","str2":"XXX"}, success: function (result) { //成功事件 }, error: function (error
) { //错误事件,调试查看 参数error
的内容
} });
查看了下,是错误500
@生活还是要继续:
500可能是后台代码中有错误导致的
常见的5××错误
5xx-服务器错误 服务器由于遇到错误而不能完成该请求。 500-内部服务器错误。 500.12-应用程序正忙于在Web服务器上重新启动。
再详细的错误可以使用,使用火狐调试或者IE debug 更方便看出错误
error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); },
data里面的参数 应该是方法test中的参数 并且名字要相同 Test(string str,string str2)
同意一楼的