[英]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.