ani*_*ani 5 php ajax jquery json
嗨,我有下面的脚本问题.我认为问题在于需要通过AJAX发送到php的数据.
jQuery的
$('.send').live("click", function(){
$.ajax({
url:'foobar.php',
type:'post',
data: 'id=' + $(this).attr('id'),
dataType:'json',
contentType: 'application/json; charset=utf-8',
success: function(data) {
switch (data.status)
{
case "a":
alert(data.text);
break;
case "b":
alert(data.text);
break;
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert ("error: "+textStatus);
}
})
}
Run Code Online (Sandbox Code Playgroud)
而且,PHP
$id = $_REQUEST['id'];
switch ($id) {
case "foo":
$data["status"] = "a";
$data["text"] = "foo-foo";
echo json_encode($data);
break;
case "bar":
$data["status"] = "b";
$data["text"] = "bar-bar";
echo json_encode($data);
break;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做
//data: 'id=' + $(this).attr('id'),
Run Code Online (Sandbox Code Playgroud)
并改变这一点
$id = 'foo';
Run Code Online (Sandbox Code Playgroud)
脚本工作得很好.我需要做些什么来使上面的两个脚本都可以工作?提前致谢.
我会将我的评论作为答案。
除了使用已弃用的 jQuery API 之外,其他人没有指出的是以下内容:
您在下面一行中正在做什么:
contentType: 'application/json; charset=utf-8',
Run Code Online (Sandbox Code Playgroud)
是您向服务器承诺 HTTP 实体将是 JSON 字符串,但事实并非如此。它实际上是通常的百分位编码字符串。( a=b&c=d&e=f)。
如果删除该行,浏览器将发送默认值 Content-Type 作为application/x-www-url-form-encoded。这将触发 PHP 解析 HTTP 实体,并为您提供$_REQUEST正确填充的数组。
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |