Ошибка, когда echo $ _GET ["jsoncallback"] - PullRequest
0 голосов
/ 15 ноября 2011
<?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 ]

1 голос
/ 15 ноября 2011

Поскольку вы не написали точно, что пытаетесь сделать, я предполагаю, что вы пытаетесь вернуть список параметров HTML, которые функция обратного вызова JS поместит в ваш документ.

попробуйте это:

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

Сначала все параметры будут созданы в виде строки, а затем - обратный вызов.

1 голос
/ 15 ноября 2011

Вы не говорите, где ошибка, но, вероятно, она в JS:

  1. Завершите свои утверждения с помощью ;
  2. Генерируйте действительный JS.Вы не можете просто засунуть кучу HTML в вызов функции JS.Вам нужен какой-то объект JavaScript. json_encode сгенерирует объект или массив.Или вы можете создать строку, но без символов с особым значением, заменить новые строки и заключить в кавычки значение.
  3. Разумность проверить ваши данные $_GET, чтобы убедиться, что они соответствуют синтаксису имен функций JS.*

О, я вижу, вы пометили это как JSON-P, в этом случае:

Создайте один объект со всеми данными, конвертируйте его в JSON сencode_json, затем оберните все это с помощью обратного вызова (и) ;.Не вызывайте обратный вызов несколько раз в цикле while.

0 голосов
/ 15 ноября 2011

$_GET обычно не возвращает ошибок.Возможная точка ошибки - ваш запрос.

Вставьте

echo mysql_error();

перед циклом while;

0 голосов
/ 15 ноября 2011

Учитывая, что вы не указали, какую ошибку вы получаете.Я предлагаю попробовать это:

<?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.";
?>
0 голосов
/ 15 ноября 2011

Вы уверены, что 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>)';
        }
?>
...