2011-11-15 5 views
-1
<?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>)'; 
     } 
?> 

結果をエコーするとエラーですが、どのように修正するのですか?

+1

どのようなエラー......? – Mob

+0

URLをリンクできますか? ../page.php?jsoncallback=functionname – Niels

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

はこれを試してみてください。

1

エラーがどこにあるかあなたは言いませんが、おそらくそれはJSである:

  1. 有効なJSを生成;
  2. であなたの文を終了します。あなたはJS関数呼び出しでたくさんのHTMLを押すだけではいけません。 JavaScriptオブジェクトのいくつかの並べ替えが必要です。 json_encodeはオブジェクトまたは配列を生成します。あるいは、文字列を作成して特殊な意味を持つ文字をエスケープしたり、改行を置き換えたり、値を引用したりすることもできます。
  3. $_GETデータを確認して、JS関数名の構文に準拠していることを確認してください。

ああ、私はあなたが、その場合には、JSON-Pとしてこれをタグ付けしている参照してください。

は、全体を包む、その後、encode_jsonとJSONに変換し、すべてのデータを持つ単一オブジェクトを構築コールバック(と);で。 whileループでコールバックを何度も呼び出さないでください。

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

$_GET通常はエラーを返しません。 エラーの可能性がある点は、クエリです。あなたのwhileループの前に

挿入

echo mysql_error();