首页 > 解决方案 > 包含 php 文件时 $.post 失败

问题描述

我正在对返回 json 数据的 .php 文件进行 $post 调用。如果我只使用一个 .php,它工作得很好,但如果我尝试包含另一个 .php,它会落入 .failed 回调中。我在这里整理了一个示例,其中包含一个甚至什么都不做的.php。

Javascript:

$.post("/test_php/cgi.php", l_cDB_arg_array, function(o) {
  console.log("Returned from db_interface call" + JSON.stringify(o));
  console.log(JSON.stringify(o));
  l_this.showLayer("top of the world", false);
}).fail(function(response) {
  console.log('Error: ' + JSON.stringify(response));
});

首先cgi.php:

<?php
include "noop.php";

header("Content-Type: application/json; charset=UTF-8");


$ret = json_decode('{"some":"data"}');

echo json_encode($ret);

第二个noop.php

<?php

在 cgi.php 中包含 noop.php 时的结果

Error: {"readyState":4,"responseText":"{\"some\":\"data\"}","status":200,"statusText":"OK"}

在 cgi.php 中不包含 noop.php 时的结果

Returned from db_interface call{"some":"data"}

查看我得到的所有 .fail 参数:

响应:{"readyState":4,"responseText":"{"some":"data"}","status":200,"statusText":"OK"}

文本状态:解析器错误

errorThrown: SyntaxError: JSON 中位置 0 的意外标记

将标题移动到包含之前并没有改变任何东西。

标签: javascriptphpjquery

解决方案


安装了eclipse,并用它编辑了noop.php。我可以使用 Eclipse 编辑器在文件中再看到一行,它在 Visual Studio 中显示。用eclipse删除多余的行解决了这个问题。


推荐阅读