对web前端技术不熟啊,为什么我用
1 $("#btnGet").bind("click",function(){ 2 $.get("AjaxGet.ashx", 3 {name:"terry",sex:"男"}, 4 function(data){ 5 alert(data); 6 } 7 ) 8 })
上面的代码完全可以执行,但是我用
$("#btnPost").bind("click",function(){ $.post("AjaxPost.ashx", {name:"terry",sex:"男"}, function(data,status){ alert(data.name); alert(data.sex); alert(status); }, "json" ) })
post方法请求AjaxPost.ashx时,后台代码就会出错,QueryString["name"]返回的是一个null,why?AjaxGet.ashx中的代码和这个一模一样,为什么get方法请求的data可以被QueryString获取,而post不行?
求解释?
Get:用Request.QueryString读取
Post:用Request.Form读取
但是为什么我上面的代码,用post获取不了json字符串呢?按理说进入了function()方法啊,但是不能使用其中的data数据
@车上有首长: 你用Firebug查看下响应的结果,就知道原因了
@车上有首长: 你的name和sex都是字符串,后台代码拼接的时候应该用双引号括起来吧。
比如应该返回:"{\"name\":\"" + name + "\",\"sex\":\"" + sex + "\"}"
@DiQiSoft.Com: 我试了一下,真的可以了,
$("#btnPost").bind("click",function(){ $.post("AjaxPost.ashx", {name:"terry",sex:"男"}, function(data){ alert(data); var sx = JSON.parse(data); alert(sx.name); } ); })
通过将name和sex的值再加上双引号,就可以调用JSON.parse(data)方法了,也就是说如果后台传递字符串到jQuery被解析成json,不管是key还有value都需要带有双引号吗?
@DiQiSoft.Com:这个问题应该差不多有点眉目了,如果不是标准的json串(即key值和value都有""的情况),使用JSON.parse是会导致转化异常的,但是如果是简写的json串(即key值没有被双引号包围起来,但是value必须被双引号包着)就可以使用
var jsonObject = eval("(" + data + ")");
将后台传过来的json串转化为json对象,这个时候就可以使用 .XX属性,或者[XX属性]获得里面的数据了,不知道这样说对不对?灰常感谢
你这样肯定有问题了context.Request.QueryString[]本来就是接受get传值的,你要用post传值的话,就应该写成context.Request.From[]这样啦。
测试了下,的确是这样,但是为什么我上面的代码,用post获取不了json字符串呢?按理说进入了function()方法啊,但是不能使用其中的data数据
@车上有首长: 这个你要跟一下JS代码看提示什么才能做出判断,现在这要我也看不出来呢,你可以上个图,大家一起给你分析一下
用context.request.params[""]接收
测试了下,的确是这样,但是为什么我上面的代码,用post获取不了json字符串呢?按理说进入了function()方法啊,但是不能使用其中的data数据
你需要明白HTTP请求中 GET 与POST的区别 GET 是将传递的值附加在URL上而POST则是附加到请求体(Body)中 请求方式不一样 获取方式自然也就不一样了 Request.QueryString[] 是用于URL 的
但是为什么我上面的代码,用post获取不了json字符串呢?按理说进入了function()方法啊,但是不能使用其中的data数据
post提交的用context.request.params[]
但是为什么我上面的代码,用post获取不了json字符串呢?按理说进入了function()方法啊,但是不能使用其中的data数据
function 是返回状态(回调函数) status有200 和404 500等标示 只有200代表成功
前面的错误 楼上的都解释了很清楚了