2012-03-27 11 views
2

MySQLデータベースへのクエリを処理するために設計されたphpファイルを使用するAJAXページリクエストがあります。 PHPファイルは正常に動作しますが、なんらかの理由でそれは私にはうまくいきません。ここで私が持っているものです。JSONオブジェクトが定義されていません

{"results":[{"ID":"12","area":"Hoboken","bedrooms":"5","fullbath":"3","halfbath":"1","remarks":"No remarks to speak of.","sqft":"2500","photos":null,"price":"1000","fee":null,"realtor":"Jane Doe","phone":"555-555-5555","address":"10th & Willow","bix":"1"}]} 

しかし、すぐに私はそれを変更するよう:

function updateForm(){ 
     ID = $('#listings').val(); 
     $.ajax({ 
      type: "POST", 
      url: 'query.php', 
      data: "query=true" + 
        "&id=" + ID, 
      datatype: 'json', 
      success: function(data) { 
       alert(data); 
       updatePreview(); 
      } 
     }); 
    } 

は私とポップアップ与え

function updateForm(){ 
     ID = $('#listings').val(); 
     $.ajax({ 
      type: "POST", 
      url: 'query.php', 
      data: "query=true" + 
        "&id=" + ID, 
      datatype: 'json', 
      success: function(data) { 
       alert(data.results); 
       updatePreview(); 
      } 
     }); 
    } 

ポップアップすることは、単に、未定義言います。

最終的には、情報を解析してそれに応じてページを更新したいのですが、このJSONオブジェクトのいずれのプロパティにもアクセスできないようです。どうしたの?

EDIT:

はここでPHPファイルからのコードです:

if (isset($_POST['query'])){ 
    if (isset($_POST['id'])){ 
     $query = 'SELECT * FROM bix WHERE ID=' . get_post('id'); 
     $listing = mysql_query($query); 
     print_json($listing); 
    } 
} 
function print_json($var){ 
    $output = array(); 
    while($row = mysql_fetch_assoc($var)) { 
     $output["results"][] = $row; 
    } 
    echo json_encode($output); 
} 

function get_post($var) 
{ 
    return mysql_real_escape_string($_POST[$var]); 
} 
+0

あなたはサーバー側のコードを投稿できますか? –

+0

また、console.log()の両方の場合はどうしますか? –

+0

多分、あなたはdataTypeのTを大文字にしませんでした。 – Timmerz

答えて

1

すでにajax呼び出しでdataTypeのTを大文字にしてみましたか?

1

あなたはconsole.log(data)代わりに、これであなたは、あなたがデータにアクセスするために使用できるキーを見ることができるはずです。

0

はdata.idまたはdata.areaをdata.resultsの代わりにデータを使用して、または標的試してみて、それはあなたにそれがデータであることを意味し、警告ポップアップの文字列が表示されている場合、それは

2

を思い付くものを参照してくださいJSONではなくstringです。 JSONの場合は[Object object]を表示します。

応答タイプを確認してください。それはapplication/jsonまたはapplicaton/javascriptでなければならず、text/plainやそのようなものではありません。

UPDATE:サーバーが文字列全体を引用符で囲んでいないことも確認してください。例えば。 "[..]" - それはただの文字列です。 FireBugやChrome Developer Toolsを使用して、実際のレスポンスを確認してください。 jQueryが正しく処理できない理由を理解するのに役立つかもしれません。

+0

これは興味深いですが、jQueryドキュメントのデータ型によると、 'json'はあなたのために持ち上げることになっています...サーバーサイドコードを投稿できますか? –

+0

OKそれはそこにある – mavix

1

私はそれが解析されjson..itのは、私は信じている文字列として戻ってくると戻って来ないと思う...

使用:ユージンが指摘したように

var x = jQuery.parseJSON(data); 
alert(x.results) 
+0

しかし、それはすべきです。ドキュメントでは、データ型 'json'が文字列ではなくJSONオブジェクトを返すと述べています。 – mavix

+0

既にajax呼び出しでdataTypeのTを大文字にしてみましたか? – Timmerz

+0

ああ、それはまったく問題だった。 – mavix

0

、データは文字列です。 。 evalをお試しください:

var stuff = eval(data); 
alert(stuff.results); 

EDIT:これは動作しますが、jQuery.parseJSONはおそらくクーラーです。

関連する問題