json调用总是返回错误

时间:2014-11-30 17:55:07

标签: php html json

我想对php文件执行一个简单的json调用,但不知怎的,它总是返回错误。

这是我的html(dataString填充了表单值):

        $.ajax({
        type: "POST",
        url: "reghandle.php",
        data: dataString,
        dataType: "json",
        success: function(result){
 $("#modaltitle").html("Welcome");
 $("#errorDetails").html(result.responseText);
 $('#myModal').modal('show');
        },
                    error: function(result){
                 $("#modaltitle").html("Error:");
                 $("#errorDetails").html(result.responseText);
                 $('#myModal').modal('show');
                        }



        });

我的php文件(我使用$ num_rows产生错误或成功):

if ($num_rows>0){
 echo "error and blablabla";
 header('HTTP/1.1 500 Internal Server Booboo');
header('Content-Type: application/json; charset=UTF-8');
return json_encode(array("error" => "bad table name"));


 }else{
 echo "ok";
header('Content-Type: application/json; charset=UTF-8');
return json_encode(array("success" => "blablabla"));


 }

如果我让我的php文件产生错误,模式屏幕弹出:

  • 标题:错误
  • 错误详细信息:错误和blablabla

(这都是正确的)

如果我让我的php文件成功,模态屏幕弹出:

  • 标题:错误(这应该是欢迎信息)
  • 错误详情:好的

从我的php文件中返回成功时出现了一些错误,但我还没有弄清楚它是什么。

3 个答案:

答案 0 :(得分:1)

echo "ok";将其分为两个方面:

  • 您必须在之前输出HTTP标题输出任何内容。
  • 在JSON文档中的JSON之前输出一些自由文本使JSON无效

你是return JSON(如果你将它返回到任何有用的地方,它是不清楚的)而不是echo它。

答案 1 :(得分:1)

因为echo "error and blablabla";echo "ok";不是json! 删除这些。

答案 2 :(得分:0)

您告诉Jquery,只有来自服务器的JSON响应才会被视为成功,但您没有发送JSON响应。

所以,请注意以下几点:

  1. 在设置任何标头之前,您不应该输出(回显)任何标头,因为标头已经发送,因此无法修改。
  2. 如果您设置标题以说文档是json,那么您应该在页面上的某个地方输出一些json! (虽然它仍然必须在标题之后)。
  3. 您的json_encode语句不会做任何事情,因为它只会返回。它不会将编码的json数据输出到任何地方的页面上。
  4. 简而言之,如果你删除当前的回声线,然后用回声替换你的回报,那么它应该可以工作。