質問

データベーステーブルを更新するためのスクリプトがあります。 JSONアレイを返し、JQueryでテーブルを更新する必要があります。

私のPHPスクリプト:

$update = mysql_query("UPDATE PLD_SEARCHES SET STATUS = 1, TOTAL_RESULTS = ".$scrapper->getTotalResults().",RESULTS = $resultCounter WHERE ID = ".$searchId);
$output = array("status"=>"COMPLETED","results"=>$resultCounter,"totalResults"=>$scrapper->getTotalResults());
echo json_encode($output);

jQueryコード:

$("button").live("click", function(event){
                    event.preventDefault();
                    $.getJSON("startsearch.php",{ searchId: $(this).val() }, function(data){
                        alert(data[0].status);
                    });

さて...問題は、私が使用する場合です $.post("startsearch.php",{ searchId: $(this).val() }, function(data)) スクリプトが実行され、Valueが未定義で素敵なアラートを受け取ります。パラメーター「JSON」を追加すると、スクリプトは実行されなくなります。私はGetJsonを使用しようとしましたが、再び同じ問題です。

誰かがアイデアを持っていますか?私は必死です...これはほぼ1週間私を悩ませてきましたが、私はまだそれを解決することができませんでした。

役に立ちましたか?

解決

PHPファイルで、正しいコンテンツタイプを必ず設定してください。

header("Content-type: application/json; charset=utf-8");

jqueryが正しくできるように eval JSONオブジェクトへの応答。

他のヒント

次のように応答データを届けることができます。

alert(data.status);
alert(data.results);
alert(data.totalResults);

アラートを使用せず、FirefoxにFirebugをインストールするか、ChromeまたはSafariのJavaScriptコンソールを有効にしてください。その後、使用できます console.log(data);

私の推測では、データは配列ではないということです。また、jqueryドキュメントの各()exmapleを見てください http://docs.jquery.com/ajax/jquery.getjson

まあ、私は信頼しています json2.js Ajaxリクエストから返されたJSONデータを解析するため。からダウンロードできます http://json.org. 。このライブラリは、あらゆる文字列を解析するより良い方法を提供し、刺し傷がJSONにない場合は例外を投げます。

私はいつもこのようなajaxリクエストを書きます:

$.post(URL,
  { PARAM },
  function(data){
    try {
      var r = JSON.parse(data);
      //this for your code above
      alert (r.status); //should be 'COMPLETED'
    }
    catch (e) {
      //data is not in json format, or there are another exception in try block
      //do something about it
      alert('Exception occured, please check the data!');
    }
});

JSONを処理すると、PHPの配列はJSONの可変メンバーになります。したがって、あなたのPHPにある場合はそうです $output['status'], 、JSONでは、そうなるでしょう r.status.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top