echo $ _GET [“jsoncallback”]时出错

时间:2011-11-15 09:55:21

标签: php jsonp

<?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>)';
        }
?>

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

5 个答案:

答案 0 :(得分:1)

你没有说出错误在哪里,但可能是在JS中:

  1. 使用;
  2. 终止您的陈述
  3. 生成有效的JS。你不能只是在JS函数调用中推送一堆HTML。你需要某种JavaScript对象。 json_encode将生成一个Object或一个Array。或者您可以构造一个字符串,但可以转义具有特殊含义的字符,替换新行,并引用该值。
  4. 完整性检查您的$_GET数据,以确保它符合JS函数名称的语法。
  5. 哦,我知道你已将此标记为JSON-P,在这种情况下:

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

答案 1 :(得分: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 :(得分:0)

你确定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>)';
        }
?>

答案 3 :(得分:0)

鉴于您没有提供您正在获得的错误。我会建议试试这个:

<?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.";
?>

答案 4 :(得分:0)

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

插入

echo mysql_error();
while循环之前

;