【问题标题】:jQuery, Ajax, JSON, PHP and parsererrorjQuery、Ajax、JSON、PHP 和 parsererror
【发布时间】:2010-11-18 03:38:15
【问题描述】:

我正在尝试使用$.ajax 中的jQuery 将表单发送到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);
?>

【问题讨论】:

  • 感谢您的快速回复 - 我刚刚在 PHP 中添加了 msg 周围的引号,但仍然出现错误。 :(
  • 哦 :-( 你确定这是从服务器得到的“解析错误”吗?你的 PHP 脚本不长于这两行吗?因为那些看起来不错(至少没有解析错误) ; 你使用的是 PHP >= 5.2,对吧?
  • 不应该以“Shouldn't”开头的答案与原始问题相对应,并且不占用答案空间吗?
  • 当您在网络浏览器中访问inscrever_curso.php 时会得到什么?
  • 是的,我之前使用过一个更大的脚本,但由于它不起作用,所以我先尝试使其变得简单。即使使用这个简单的脚本,IT 也无法正常工作。

标签: php jquery ajax json


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • Ergh :-D 干得好:我们可能找不到这个 ^^ 感谢您让我们知道导致问题的原因!
    【解决方案3】:

    您的 PHP 代码应该是:

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

    【讨论】:

      【解决方案4】:

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

      $return[msg]="Testing, testing.";
      echo json_encode($return);
      

      使用 E_NOTICE error_reporting 级别执行此操作,您将获得:

      Notice: Use of undefined constant msg - assumed 'msg'
      

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


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

      $return['msg']="Testing, testing.";
      echo json_encode($return);
      

      注意msg 周围的引号:您正在创建的数组元素的键是一个字符串常量,因此,它包含在引号中。

      如果您不添加这些引号,PHP 会搜索一个名为“msg”的 defined 常量,它可能不存在。

      有关这方面的更多信息,您可以查看手册的这一部分:Why is $foo[bar] wrong?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-18
        • 2014-11-15
        • 2011-06-30
        • 1970-01-01
        • 2011-11-20
        • 1970-01-01
        相关资源
        最近更新 更多