jQuery、Ajax、JSON、PHP和parsererror

jQuery、Ajax、JSON、PHP和parsererror,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我正在尝试使用中的$.ajax向PHP发送表单。我将整个内容作为JSON发送,但是,当我尝试获取响应时,会得到“parsererror”。我做错了什么 jQuery片段: $("form").submit(function(){ $.ajax({type: "POST", url: "inscrever_curso.php", data: {cpf : $("input#cpf").val(),nome : $("input#nome").val()},

我正在尝试使用中的
$.ajax
向PHP发送表单。我将整个内容作为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;
});
PHP:


我不知道这是否是您的问题的原因,但您的PHP代码有一点:

$return[msg]="Testing, testing.";
echo json_encode($return);
通过E_NOTICE error_报告级别执行此操作,您可以获得:

Notice: Use of undefined constant msg - assumed 'msg'
如果在服务器上启用并显示通知,则is将导致输出为无效JSON(输出在JSON字符串之前包含错误消息)


为避免出现这种情况,必须使用以下语法:

$return['msg']="Testing, testing.";
echo json_encode($return);
注意
msg
周围的引号:您正在创建的数组元素的键是一个字符串常量,因此,它被括在引号中

如果不加引号,PHP将搜索一个名为“msg”的常量,该常量可能不存在

有关此方面的更多信息,请参阅手册的此部分:


(我不确定它是否能解决您的问题,但无论如何知道这一点很好。)

您的PHP代码应该是:

<?php
    $return = array();
    $return['msg']="Testing, testing.";
    echo json_encode($return);
?>


我刚刚发现发生了什么:我得到了一个友好URL的
.htaccess
脚本,它正在搜索正确的PHP文件,但在错误的目录中。我只是在URL中的文件名前添加了一个“/”,然后它就起作用了。

不确定这是否对任何人都有帮助,但我刚刚调用了json_decode(),但之前没有echo。非常有效的PHP,但会弄乱AJAX响应并导致解析器错误。

感谢您的快速回复-我刚刚在PHP中添加了msg的引号,但仍然会出现错误:(哦:-(你确定你从服务器上得到的是“解析错误”吗?你的PHP脚本不超过这两行吗?因为这两行看起来不错(至少没有解析错误);你使用的是PHP>=5.2,对吗?答案不应该以“不应该”开头吗对原始问题进行评论,不要占用答案空间?当您在web浏览器中转到
inscrever\u curso.php
时,您会得到什么?是的,我以前使用过一个较大的脚本,但由于它不起作用,我尝试先使其简单化。即使使用这个简单的脚本,它也不起作用。呃:-D干得好:我们可能没有找到此^^感谢您让我们知道问题的原因!
<?php
    $return = array();
    $return['msg']="Testing, testing.";
    echo json_encode($return);
?>