0

我必须将系统从一台服务器移动到另一台服务器,并且在尝试访问此页面时遇到错误。该代码与实时工作系统完全相同,但由于某种原因它现在无法正常工作。

引发错误的 JS 代码:

var loadData = function(data) {
if(data)
    data += '&offset=' + offset;
else
    data = 'offset=' + offset;

var callback = {
    success: function(o) {
        try {
            var data = YAHOO.lang.JSON.parse(o.responseText);
        } catch(e) { alert('e: ' + e + '\no: ' + o + '\ndata: ' + data + '\noffset: ' + offset + '\n Response Text:' + o.responseText); }

        // removed a lot of pointless code (no error here)
}

YAHOO.util.Connect.asyncRequest('POST', 'json/dmrlist.php', callback, data);
}

这是从警报中打印出来的:

在此处输入图像描述

这是它正在“调用”的 php 代码的(开始),但屏幕截图中显示了一个错误。

line 6: $JSON = json_decode($_POST['JSON']);

line 8: if($JSON->Depot)
line 9:     $filter = " AND `Site` = '" . $JSON->Depot . "'";

基本上,$JSON 是未定义的,这意味着没有发布任何内容,但看起来 javascript 是为了向它发布信息?

我很困惑,我没有使用 JSON 或 javascript 的经验,也无法弄清楚为什么这不起作用。

4

2 回答 2

1

数据变量将被发送到服务器,但可能只是作为键/值对。您可以尝试将它们倾倒出来:

if (isset($_POST['JSON'])) {
    print_r($_POST['JSON']);
}
if (isset($_POST['Depot']) {
    print_r($_POST['JSON']);
}

或者只是 print_r( $_POST );

我怀疑 $_POST['JSON'] 未设置,您可能不需要将其他值解码为 JSON,因为它们可能只是您可以直接从 $_POST 数组中读取的键/值对,但我我不熟悉 YUI 的 ajax 函数,所以我可能是错的 - 检查服务器上的值。

PS 以这种方式使用 print_r 将导致无效返回(它不会是 JSON),但您将能够在 Firebug 等中查看它并查看值。

于 2012-08-02T13:53:53.187 回答
0

问题是旧服务器使用的是旧版本的 php,因此似乎不需要“ifsets”(我不知道为什么),但我只是把if(isset($_POST['JSON'])){处理 JSON 的代码放在前面,现在它可以工作了. 我假设对于第一个循环没有发布任何内容,因此无法接收任何内容,但是 ifset 让 php 跳过 JSON 代码并从 db 获取第一个选择,然后可以循环返回,这个时间$_POST['JSON']实际上是设置的。

TL;DR:旧版本的 PHP,只需要放入一个 ifset,并声明一个变量

于 2012-08-03T08:21:57.030 回答