我有以下功能:jQuery的阿賈克斯POST不是PHP變量返回
$(window).scroll(function() {
if(ready && labelstatus && $(window).scrollTop() + $(window).height() > $(document).height() - 100){
$('#bottom2').html(loading);
ready = false;
$.ajax({
url: 'scripts/nearbothome.php',
data: {"currentNumber": botnumber, "usersid": usersid},
type: 'post',
success: function(data) {
botnumber = "<?php echo $uniqueend; ?>";
alert("<?php echo $uniqueend; ?>");
$('#oldposts').append(data);
$('#bottom2').html(bottom);
ready = true;
labelstatus = data;
if (data < 1) {
labelstatus = false;
}
}
});
}
});
這一切工作正常,並不會如預期除了變量「botnumber」設置爲新值。它應該設置的PHP變量應該由Ajax($ uniqueend)執行的.php文件返回。
在這裏看到:
<?php
//open a database connection
include("../db.php");
//receive value
$currNum = $_POST['currentNumber'];
$uidd = $_POST['usersid'];
$results7 = mysql_query("SELECT * FROM `uc_posts` WHERE `postinguser` IN (SELECT `followers` FROM `uc_users` WHERE `id` = $uidd) AND id < $currNum ORDER BY id DESC LIMIT 20");
sleep(1);
while ($row = mysql_fetch_array($results7)) {
echo '<div class="postfeed2">';
$color='#ababab';
$id = $row['id'];
$page = $row['page'];
$postinguser = $row['postinguser'];
$displayname=mysql_fetch_array(mysql_query("SELECT `display_name` FROM `uc_users` WHERE `id` = $postinguser LIMIT 1"));
$username=mysql_fetch_array(mysql_query("SELECT `user_name` FROM `uc_users` WHERE `id` = $postinguser LIMIT 1"));
$checkiffav=mysql_fetch_array(mysql_query("SELECT * FROM `uc_posts` WHERE find_in_set($uidd,`likedby`) AND `id` = $id"));
if ($checkiffav) {
$color='#FF5733';
}
echo '<table><tr><td style="vertical-align: baseline;"><b><img src="blank-user-medium.png" width="50px" height="50px" style="vertical-align: text-top;margin-right: 8px;margin-top: 0px;border: 0px solid #D0D0D0;border-radius: 5px 5px 5px 5px;"></b></td>';
echo '<td style="display: block;word-break: break-word;"><b>' . $displayname[display_name] . '</b>';
echo ' <span style="color:#ababab;">@' . $username[user_name] . '</span>';
echo '<br>' . $page . '';
echo '<br><a href="javascript:void(0)" onclick="javascript:return like(' . $id . ',' . $uidd . ');"><i class="fa fa-heart fa-lg" id="heart' . $id . '" style="margin-top: 5px;color:' . $color . '"></i></a></td></tr></table>';
echo '</div>';
}
$uniqueend2 = mysql_fetch_array(mysql_query("(SELECT * FROM `uc_posts` WHERE `postinguser` IN (SELECT `followers` FROM `uc_users` WHERE `id` = $uidd) AND id < $currNum ORDER BY id DESC LIMIT 20) ORDER BY id ASC"));
$uniqueend = $uniqueend2['id'];
echo $uniqueend;
?>
我可以看到,它呼應:184.但是在我加入了jQuery爲了覈實沒有報警是存在的。
我會使用JSON,但我有大量的PHP /內容數據它返回,所以我不知道如何適合或工作。
謝謝!
因此,基本上你正在做一個ajax請求,在那裏你改變了一個變量,然後你正在期待'echo'語句來實際迴應出已更改的變量?這不是它的工作方式,'echo'語句在服務器上發生,在頁面發送到瀏覽器之前很久,甚至在ajax調用發生之前更長時間,稍後在服務器上更改該變量不會影響過去迴應了什麼。 – adeneo
該代碼非常危險。你很容易受到[sql注入攻擊](http://bobby-tables.com)的影響,你只是假設查詢永遠不會失敗。兩者都是非常糟糕的事情。 –
@MarcB我將在稍後驗證.php文件中的發佈數據。我只是想先讓我的功能爲我工作(我相信這是一個合理的解決方案,不確定,仍在學習)。 – Ben