日期:2014-05-16  浏览次数:20671 次

一个从来没遇到过的PHP的POST数据接收错误问题
我在客户端用的如下jquery代码发送的ajax的POST请求
JScript code

$('#compile').click(function() {
        var form = $('#compile_form');
        var form_data = {
            id : $("input[@type=hidden][name=exercise_id]").val(),
            code : editor.getValue()
        };
        $.ajax({
            url : SITE_URL+"student/doprogram/compile_c",
            type : 'post',
            data : form_data,
            success : function(msg, status) {
                compile_result = $('#compile_result');
                $(compile_result).val(msg);
            }
        });

        return false;
    });


然后服务端直接print_r($_POST);按道理说是客户端发送啥,服务端就打印应该没错的,但是下面是结果:
我在code这个表单写入的数据是
scanf("%d", &aa);
然后下面是我用firebug调试ajax的结果
JScript code

code    scanf("%d", &aa);
id    27


但是服务器的输出却是
JScript code

Array
(
    [id] => 27
    [code] => scanf("%d", &aa;);
)


最奇怪的是,并不是所有的数据都有这种错误,比如,如果我输入的scanf("%d", &a);这样就是完全正确的,另外&num也是有问题。。如果有大侠遇到过这个问题,请讨论讨论啊。哦,对了,如果是用的表单提交方式,就没有这个问题,无论啥数据都是正确的。


------解决方案--------------------
print_r($_POST); 这样打印出来,
Array
(
[id] => 27
[code] => scanf("%d", &aa;);
)

js当字符串处理了,

楼主想返回数组吗?
那就
echo "{\"id\":\"123\"}";
这样类似的。