【问题标题】:Error when echo $_GET["jsoncallback"]echo $_GET["jsoncallback"] 时出错
【发布时间】:2011-12-29 09:12:04
【问题描述】:
<?php    
$query = mysql_query("Select id, name From table");
        while($row = mysql_fetch_array($query)) {
            echo $_GET["jsoncallback"] . '(<option value='.$row['id'].'>'.$row['name'].'</option>)';
        }
?>

当我回显结果时,它是错误的,如何解决?

【问题讨论】:

  • 你能链接你的网址吗?应该类似于 ../page.php?jsoncallback=functionname
  • 看起来您正在尝试向回调发送一个字符串,但您没有用引号括起来。把 \' 放在你的
  • 请您提供您的错误以及有关jsoncallback 的更多信息。
  • @yoavmatchulsky:我认为这个错误是使用 while()

标签: php jsonp


【解决方案1】:

由于您没有准确地写出您想要做什么,我猜您正在尝试返回一个 JS 回调函数将放置在您的文档中的 HTML 选项列表。

试试这个:

<?php    
$options = '';
$query = mysql_query("Select id, name From table");
while ($row = mysql_fetch_array($query)) {
  $options .= '<option value="'.$row['id'].'">'.$row['name'].'</option>' . "\n";
}
echo $_GET["jsoncallback"] . "('" . $options . "');";
?>

这将首先将所有选项创建为字符串,然后才构建回调。

【讨论】:

    【解决方案2】:

    你没有说错误在哪里,但大概是在JS中:

    1. ; 结束您的陈述
    2. 生成有效的 JS。你不能只是在 JS 函数调用中塞进一堆 HTML。您需要某种 JavaScript 对象。 json_encode 将生成一个对象或数组。或者,您可以构造一个字符串,但转义具有特殊含义的字符、替换新行并引用该值。
    3. 健全性检查您的 $_GET 数据以确保其符合 JS 函数名称的语法。

    哦,我看到您已将其标记为 JSON-P,在这种情况下:

    用所有数据构造一个单个对象,用encode_json将其转换为JSON,然后用回调(和)包装整个东西;。不要在 while 循环中多次调用回调。

    【讨论】:

      【解决方案3】:

      你确定设置了 jsoncallback 吗?试试这个:

      <?php
      $jsoncallback = isset($_GET["jsoncallback"])? $_GET["jsoncallback"] : "";    
      $query = mysql_query("Select id, name From table");
              while($row = mysql_fetch_array($query)) {
                  echo $jsoncallback . '(<option value='.$row['id'].'>'.$row['name'].'</option>)';
              }
      ?>
      

      【讨论】:

        【解决方案4】:

        鉴于您没有提供您遇到的错误。我建议试试这个:

        <?php  
        if(isset($_GET['jsoncallback'])) 
        {  
            $query = mysql_query("Select id, name From table");  
            while($row = mysql_fetch_array($query)) {  
               echo $_GET["jsoncallback"] . '(<option value='.$row['id'].'>'.$row['name'].'</option>)';
             }
        }
        
        else 
          echo "Jsoncallback not set.";
        ?>
        

        【讨论】:

          【解决方案5】:

          $_GET 通常不会返回错误。 可能的错误点是您的查询。

          插入

          echo mysql_error();
          

          在您的while 循环之前;

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-20
            • 2016-11-23
            • 1970-01-01
            • 2018-03-23
            相关资源
            最近更新 更多