2011-01-10 14 views
0

私は、PHPページからデータを取得し、プレースホルダにロード中のGIFイメージを使用して、結果が途中であることをユーザーに知らせるために、jQuery AJAXを使用しています。私はトリガーをクリックして、私はPOSTが行くと戻ってくると、データが正しいことがわかりますFirebugのコンソールを開き奇妙なjQuery AJAXの問題

$(".project").change(function(){ 
      $(".custName").html("<img src='/admin/images/ajax-loader.gif' />"); 
      $(".projectDesc").html("<img src='/admin/images/ajax-loader.gif' />"); 
      var project_num=$(this).val(); 
      var dataString = 'project='+ project_num; 

       $.ajax 
        ({ 
         type: "POST", 
         url: "customerfilter.php", 
         dataType: "json", 
         data: dataString, 
         cache: false, 
         success: function(data) 
         { 
          $(".custName").html(data.message1); 
          $(".projectDesc").html(data.message2); 
         } 
        }); 


     }); 

。しかし、ロード中のGIFは決して消えず、正しいデータに置き換えられることはありません。理由はありません。

これは、Firebugののスクリーンショットと応答ウィンドウです:

​​

相対PHP:

while ($row = mysql_fetch_array($result)) { 
       echo json_encode(array(
        "message1" => $row['cust_name'], 
        "message2" => $row['description'], 
       )); 

$結果は、私は同様の問題に遭遇してきたのmysql_query

+0

私たちに戻って、おそらくそれを生成し、PHPが来るデータを示しています。 – jondavidjohn

+0

「成功」コールバックが機能するかどうかを確認します。たとえば、console.logを入れます。応答が有効なjsonでない場合、コールバックは正しく呼び出されていません。 –

+1

"成功"コールバックを実行するためにデバッガを使用しましたか? – Pointy

答えて

5

:-)デバッグを支援し続けることができます持っているすべての新しい情報。これを試してみてください:


$output = Array(); 
while ($row = mysql_fetch_array($result)) { 
       $output[] = Array(
        "message1" => $row['cust_name'], 
        "message2" => $row['description'], 
       ); 
} 
echo json_encode($output); 

EDIT:さらに、あなたもjavascriptのコールバックあなたの「成功」を変更する必要があります。


success: function(data) { 
    $(".custName, .projectDesc").empty(); 
    for(var x in data) { 
    $(".custName").append(data[x].message1); 
    $(".projectDesc").append(data[x].message2); 
    } 
} 
+0

+1 - これはほぼ確実に問題/解決策です。 –

+0

'success'コールバックが今実行されていますか? –

+0

あなたはjQueryを追加して以来、完璧!ありがとうたくさん – benhowdle89

1

ですタイプをJSONに設定するとき。 PHPが正しいJSONを100%返さない場合、jQueryはsuccess関数を実行しません。

だから、これを試してみてください。それは呼ばれていたときにあなたが見ることができるように

  1. success方法の内console.log("success was called")文を入れてください。

  2. json_encode機能を使用して、PHPコードが適切なJSONを作成していることを確認してください。

  3. ポストあなたは私たちは、あなたが応答が有効なJSONされていないことを