這是我的第一篇文章,我有這種感覺,這是愚蠢的。我已經去過這個問題:https://stackoverflow.com/questions/511947?tab=newest#tab-top雖然這仍然沒有真正的幫助。jQuery.post()刷新Firefox中的頁面儘管異步:真
我有3個PHP頁面。主要的頁面是一個與所有的jQuery它:
<body>
<script type="text/javascript" src="includes/jquery-1.4.2.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// for each trade, load the current comparisons
<?php
foreach ($trades as $trade) {
?>
$("#<?php echo $trade; ?>Div").load("functions/loadPriceSurveyComparisons.php", {
trade: "<?php echo $trade; ?>"
});
$("#addComp<?php echo $trade; ?>").click(function() {
$.post("functions/addPriceSurveyComparisons.php", {
trade: "<?php echo $trade; ?>",
alb: $("#albProd<?php echo $trade; ?>").val(),
comp: $("#compProd<?php echo $trade; ?>").val()
}, function(data) {
$("#<?php echo $trade; ?>Div").load("functions/loadPriceSurveyComparisons.php", {
trade: "<?php echo $trade; ?>"
});
}, "xml");
});
<?php
}
?>
});
</script>
本頁面加載基本項目到負載的div元素的列表。 $ .load用於此。 $ .load有一個回調,它將點擊事件處理程序分配給3個不同的HTML元素(因此是$ trade的PHP回顯)。
這些點擊處理程序基本上使用$ .post進行AJAX請求。該頁面被派駐到如下:
<?php
header("Content-type: text/xml");
include("../includes/db_connection.php");
$sql = "INSERT INTO pricesurvey_compare (alb_product_id, comp_product_id, trade)
VALUES (".$_POST['alb'].", ".$_POST['comp'].", '".$_POST['trade']."')";
mysql_query($sql);
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
?>
<data>
<trade><?php echo $_POST['trade']; ?></trade>
<alb><?php echo $_POST['alb']; ?></alb>
<comp><?php echo $_POST['comp']; ?></comp>
<errors><?php echo mysql_error(); ?></errors>
</data>
出於某種原因這jquery.post()請求刷新在Firefox的頁面,我沒有看到產生的任何錯誤。我甚至不能在Net標籤中查看帶有螢火蟲的請求,因爲當頁面刷新時這個請求被清除。還有什麼有趣的是,腳本標籤中沒有出現JavaScript?但那是我現在不會注意的另一個頭痛。
請注意,當談到jQuery時,我幾乎是個noob。
Aaahhh,所以e.preventDefault()是在點擊處理程序嘿? :)謝謝,這工作! – thorne51 2010-08-30 14:34:05