微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – AJAX值发送错误

嗨,我有下面的脚本问题.我认为问题在于需要通过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);

            }
        })
    }

而且,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;

    }

但是,如果我这样做

//data: 'id=' + $(this).attr('id'),

并改变这一点

$id = 'foo';

脚本工作得很好.我需要做些什么来使上面的两个脚本都可以工作?提前致谢.

解决方法:

我会把我的评论作为答案.

除了使用已弃用的jQuery API之外,其他人没有指出的是以下内容

你在下面的行中做了什么:

contentType: 'application/json; charset=utf-8',

是你承诺服务器,HTTP实体将是一个JSON字符串,但事实并非如此.它实际上是通常的百分位编码字符串. (A = B和C = d&安培; E = F).

如果删除该行,浏览器会将认值Content-Type作为application / x-www-url-form-encoded发送.这将触发PHP解析HTTP实体,并为您提供正确填充的$_REQUEST数组.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐