2011-07-31 21 views
0

何がうまくいかないのか分からないようですが、クエリは結果を引き出していますが、jsonは引き出されていません。私はどこが間違っているのか見ていますか?jsonを引っ張っていない

runningRequest=true; 
    request = $.getJSON('/db/contacts.php',{ 
    q:$q.val() 
    },function(data){   
    showResults(data,$q.val()); 
    runningRequest=false; 
    }); 
    function showResults(data, highlight){ 
    var resultHtml = ''; 
    $.each(data, function(i,item){ 
    resultHtml+='<div class="result">'; 
    resultHtml+='<h2><a href="#">'+item.firstname+'</a></h2>'; 
    resultHtml+='<p>'+item.lastname.replace(highlight, '<span class="highlight">'+highlight+'</span>')+'</p>'; 
    resultHtml+='<a href="#" class="readMore">Read more..</a>' 
    resultHtml+='</div>'; 
    }); 

    $('div#results').html(resultHtml); 
    } 
+0

JSONがサーバーから来る可能性があります。 fiddlerやfirebugのようなものを実行して、出力を取得し、その出力をjslint.comで実行してエラーを確認してください。 – scrappedcola

+0

あなたの問題についてもう少し具体的に教えてください。あなたはそれが結果を引き出しているのは間違いありませんが、それは何ですか? – legendofawesomeness

+0

このような場合、Firebugはあなたの友人です。コンソールで、db/contacts.phpのリクエストを見ると、何が得られますか? showresults(data、$ q、val())の直前にconsole.log(data)を入れると、Firebugで何を得るのですか? –

答えて

0

代わり$.getJSON()の次のことを試してみてください。

$.ajax({ 
    url: '/db/contacts.php', 
    dataType: 'json', 
    data: { 'q':$q.val() }, //$q = ? 
    success: function(data){   
    showResults(data, $q.val()); 
    runningRequest=false; 
    }); 
}); 

編集以下のコメントに対処するために:

私はあなたがPHPでJSONを作成するjson_encode()を使用していることを推測しているが、 JSON_FORCE_OBJECT -flagも使用してください(JSONArrayにならないようにする):

<?php echo json_encode($contact_string, JSON_FORCE_OBJECT); ?> 

上記を試してみるとどうなりますか?

+0

これを試して、同じ取得します。結果はこの[{"Name": "Chris"、 "Last Name": "Jones"}]のように表示されますが、JSONには渡されません。助言がありますか? – joshua76

+0

今後の問題に対処するためにオリジナルの投稿を更新しました。 – ninetwozero

+0

ありがとう、私は得る:警告:json_encode()は、正確に1つのパラメータ、2与えられた – joshua76

関連する問題