2011-07-31 19 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

你能對你的問題更具體一點嗎?你究竟是什麼意思是拉動結果而不是json? – 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; 
    }); 
}); 

編輯解決下面的評論:

我猜你使用json_encode()在PHP創建的JSON,所以請嘗試使用JSON_FORCE_OBJECT -flag(以防止它變成JSON數組):

<?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