簡體   English   中英

jQuery,ajax,json,mysql_query不起作用

[英]Jquery, ajax, json, mysql_query is not working

show_page.php:

   <?

 session_start();
  include("includes/function.php");

$static = mysql_query("SELECT * FROM fb_pages WHERE user_id = '$_SESSION[user_id]' AND page_value = '1' ") or die(mysql_error());

            while($stat = mysql_fetch_array($static)) {

                    $page = $stat['page_name'];


                            echo json_encode($page);
  exit();

                    }       

ob_and_flush();     
?>  

和js代碼:

  <script type="text/javascript">

$.ajax({
type: "POST",
url: "show_page.php",
dataType: "JSON", //tell jQuery to expect JSON encoded response
success: function(response) {

 $('#page').html(response);
 }
});


 </script>  

我喜歡在<div id="page"></div>顯示結果。

如果運行此代碼,則結果為一頁,並且始終為一頁,但是如果我在show_page.php中刪除,則exit(); 那么結果是好的,顯示所有頁面,但是我不顯示網頁,那么可能是json。 這是什么問題?

您將退出循環,因此它僅處理第一行。 您需要將所有結果收集到一個數組中,在整個數組上調用json_encode ,然后退出。

$page = array();
while ($stat = mysql_fetch_assoc($static)) {
  $page[] = $stat['page_name'];
}
echo json_encode($page);
ob_end_flush();
exit();

但是,您的jQuery可以:

$('#page').html(response);

這期望response是HTML,而不是數組。 您需要將其更改為對響應中的每個頁面名稱執行某些操作的循環,例如

$.each(response, function(i, p) {
   $('#page').append($('<div/>', { text: p }));
});

這部分

 $page = $stat['page_name'];


 echo json_encode($page);

看起來$ page不是數組,所以您不需要添加json_encode()函數。 因此,您不需要dataType:“ JSON”

看起來您正在嘗試輸出多個INDEPENDENT json字符串。 這是行不通的。 該代碼應該更像是:

$data = array();
while ($stat = mysql_fetch_array($static)) {
    $data[] = $stat['page_name'];
}
echo json_encode($data);

請記住,JSON本質上是JavaScript賦值操作的右側。 您以JSON創建的任何內容都必須是有效的javascript,例如

var foo = json_goes_here.

你正在做類似的事情

var foo = 'bar''baz';

相反,構建一個字符串數組,當它進行json編碼時,它將更像

var foo = ['bar', 'baz'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM