【问题标题】:JSON working one place but not anotherJSON在一个地方工作,但不在另一个地方
【发布时间】:2012-08-22 22:54:59
【问题描述】:

我正在重新设计我的网站以使其基于 WordPress,在此过程中,我需要导入一些 PHP/jQuery。我发现它在 original page 上运行良好,但在 new one 上运行良好。

以下是 JSON 转储的结果:

  • Old - 应该是空的,因为没有数据
  • New - 不喜欢使用 $_POST['club'] 导入

两个实例中的代码都是:

<script type="text/javascript">
    $(document).ready(function() {
        $.ajax({
            type: "post",
            url: "eventinfo.php",
            data:  $('#club').serialize(),
            success: function(data) {
                $('#right_inside').html('<h2>' + $('#club').val() + '<span style="font-size: 14px"> (' + data[0].day + ')</h2><p>Entry: ' + data[0].entry + '</p><p>Queue jump: ' + data[0].queuejump + '</p><p>Guestlist closes at ' + data[0].closing + '</p>');
                },
            dataType: "json"
        });
    });

    $('#club').change(function(event) {
        $.ajax({
            type: "post",
            url: "eventinfo.php",
            data:  $(this).serialize(),
            success: function(data) {
                $('#right_inside').hide().html('<h2>' + $('#club').val() + '<span style="font-size: 14px"> (' + data[0].day + ')</h2><p>Entry: ' + data[0].entry + '</p><p>Queue jump: ' + data[0].queuejump + '</p><p>Guestlist closes at ' + data[0].closing + '</p>').fadeIn('500');
                },
            dataType: "json"
        });

    });
</script>

而我的 eventinfo.php 是:

<?php

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

include('guestvibe_functions.php');
connect();


$night = $_POST['club'];
$night = mysql_real_escape_string($night);

$query = "SELECT * FROM nights WHERE name = '" .$night. "'";

    $result = mysql_query($query);
    $items = array();

    if($result && mysql_num_rows($result) > 0) { 
        while ($row = mysql_fetch_array($result)) { 
        $items[] = array("entry"=>$row['entry'], "day"=>getLongDateString($row['day']), "queuejump"=>$row['queue jump'], "closing"=>$row['closing']);
        }
    } 

    mysql_close(); 
    // convert into JSON format and print

    echo json_encode($items);
?>

已经很晚了,所以我希望我已经解释过了。有什么想法吗?

编辑

我应该补充一点,两者都在同一个服务器/托管计划上。新的只是一个目录。

【问题讨论】:

    标签: php jquery json


    【解决方案1】:

    see this answer for clues

    我认为您可能在新的 PHP 服务器上有更新版本的 PHP 或不同的服务器设置。

    【讨论】:

      【解决方案2】:

      我看到了两种可能性。

      首先,在新站点上,AJAX 不会填充 club= 变量,而在旧站点中它是。然后你必须发现为什么 serialize() 不包含一个名为 'club' 的变量。

      第二个问题是即使在旧网站中也不一定会填充 club= 变量,而您只是没有收到通知警告。

      在这种情况下,修改代码来自

      $night = $_POST['club'];
      

      $night = isset($_POST['club']) ? $_POST['club'] : '';
      

      应该能解决问题。

      更新

      我查看了该网站,但我收到的 eventinfo URL 与您引用的不同。我的 Firefox 得到的是:

       http://www.guestvibe.com/wordpress/eventinfo.php
      

      ...导致 404 错误。

      【讨论】:

      • 感谢您的回复。我可以确认 serialize() 确实包含一个名为 club 的变量,因为它可以从 jQuery 打印。出现问题的地方是将该变量传递给 eventinfo.php 以返回对应于“俱乐部”的数据库值。你从哪里得到那个 eventinfo URL? 404 是可以理解的,因为它不存在。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      相关资源
      最近更新 更多