jQuery,Ajax,JSON,PHP和parsererror

Bru*_*ler 4 php ajax jquery json

我想一个形式发送给使用PHP $.ajax的jQuery.我将整个事件作为JSON发送,但是,当我尝试获得响应时,我得到'parsererror'.我究竟做错了什么?

jQuery片段:

$("form").submit(function(){
    $.ajax({type: "POST",
        url: "inscrever_curso.php",
        data: {cpf : $("input#cpf").val(),nome : $("input#nome").val()},
        dataType: "json",
        success: function(data){
            alert("sucesso: "+data.msg);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert ("erro: "+textStatus);
        }
    });
    return false;
});
Run Code Online (Sandbox Code Playgroud)

PHP:

<?php
    $return[msg]="Testing, testing.";
    echo json_encode($return);
?>
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 6

我不知道这是否是您的问题的原因,但这是关于您的PHP代码的一件事:

$return[msg]="Testing, testing.";
echo json_encode($return);
Run Code Online (Sandbox Code Playgroud)

这样做,使用E_NOTICE error_reporting级别,您将获得:

Notice: Use of undefined constant msg - assumed 'msg'
Run Code Online (Sandbox Code Playgroud)

如果在服务器上启用并显示通知,则会导致输出无效JSON(输出包含JSON字符串之前的错误消息).


要避免该通知,您必须使用以下语法:

$return['msg']="Testing, testing.";
echo json_encode($return);
Run Code Online (Sandbox Code Playgroud)

请注意引号msg:您正在创建的数组元素的键是一个字符串常量,因此,它用引号括起来.

如果你没有输入这些引号,PHP会搜索一个名为"msg" 的已定义常量,该常量可能不存在.

有关这方面的更多信息,您可以查看本手册的这一部分:为什么$ foo [bar]错了?.

(我不确定它会解决你的问题,但无论如何都要知道.)