2 回答

TA貢獻1859條經驗 獲得超6個贊
在您的情況下,您使用 AJAX 的目的是不必要的,因為您將以任何一種方式離開頁面。您實際上在做的是將變量發布到頁面,然后當發生這種情況時,您將轉到該頁面,但操作順序變成如下所示:
POST
多變的成功
離開當前頁面
該POST
變量基本上會在您當前的進程中丟失,因為這就像您通過轉到其他頁面來引起刷新。
使用 AJAX 的巨大優勢之一及其主要目的是您可以刷新頁面上的內容而不會導致重新加載。否則,為什么不簡單地使用一個<form>
元素呢?
<form action="welcome.php" method="post">
<!-- form content -->
</form>
或者解析變量的函數GET?
<script>
function sendNameAsGET(name="Jay") {
window.location = "welcome.php?name="+name+";
}
</script>
但是,如果您打算在不離開頁面的情況下刷新頁面內容,那么您的處理方式是錯誤的。您需要考慮的是擁有一個可以將內容加載到其中的容器。
例如:
<div id="ajaxDiv"></div>
如果這是你的容器,你可以有一個加載靜態內容的 AJAX 函數(或者直接添加它)。將內容加載到容器的方法是使用.html();帶有我們選擇的選擇器的函數。
例子:
$( document ).ready(function() {
$.ajax({
type : "GET",
url : "some-static-content.php",
data : { /* data if necessary */ },
success: function (html) {
$("#ajaxDiv").html(html);
}
})
});
在上面的示例中,我們將名為some-static-content.php的頁面的 HTML 內容加載到具有id ajaxDiv的容器中。
使用 AJAX 的另一個很好的理由是您現在可以將您的內容組織到不同的文件中,這使得擁有一個非常整潔的結構變得容易得多?!芭叮绻倚枰庉嬤@個特定的內容,我只是去/this/directory/and-this-file.php”。無需進入一個文件,滾動瀏覽數千行代碼即可找到您的部分。它變得很像積木或樂高積木,您可以動態互換以滿足您的需要。
并使用welcome.php文件中的 HTML 更改容器的內容,而不刷新頁面:
$.ajax({
type : "POST",
url: "welcome.php",
data: { name : "Jay" },
success: function (html) {
//Success handling
console.log("success");
$('#ajaxDiv').html(html);
}
});
現在ajaxDiv容器將從welcome.php加載您的新內容,您將能夠使用您的POST變量。如果您在welcome.phpecho中輸出變量,那么這將是現在顯示在ajaxDiv容器中的內容,而不是some-static-content.php的舊內容。POST

TA貢獻1963條經驗 獲得超6個贊
編輯:添加了第五點。
這里面有幾件事正在發生。讓我們考慮一下推理。
一:如果你只是要去頁面,為什么要發送數據?看起來帖子在發送時變得混亂,然后轉到沒有它價值的頁面。它在想“嘿,現在成功了,讓我轉到沒有價值的頁面?!?最好的解釋方式就像您再次重新提交表單一樣。
二:為什么需要 Ajax?
如果您的歡迎頁面要做一些特定的事情,就像上面的例子一樣,為什么您需要 JS?你不能讓你的表格轉到那個頁面嗎?喜歡
<form action="welcome.php" method="post">
帖子通常與表單相關,與發送數據無關。
三:這會變得令人費解。我會再次調查你為什么這樣做,因為這不是最好的。
我會將結果設為 cookie,然后重定向到頁面,并將變量設置為該 cookie。
$.ajax({
url: "welcome.php",
type: "POST",
data: {name:"Jay"},
success: function (result) {
console.dir(result); // then we can find out everything about our result
document.cookie = "cookiename=result.name"
window.location = "welcome.php";
}
});
五:好的,讓我們在 welcome.php 上再看一遍(我只是在做其他事情時想到了這一點)
在我們將值發送到 php 頁面后,我們可以創建一個會話或 php cookie。
JS 可以保持不變
$.ajax({
url: "welcome.php",
type: "POST",
data: {name:"Jay"},
success: function (result) {
console.dir(result);
// then we can find out everything about our result
window.location = "welcome.php";
}
});
歡迎原諒我的 php 有點生疏
<?php
if(isset($_POST["name"])) {
session_start();
$_SESSION["sessionName"]=$_POST["name"];
}
if (isset($_SESSION["sessionName"])) {
echo $_SESSION["sessionName"];
else {
echo "something went wrong";
}
?>
- 2 回答
- 0 關注
- 164 瀏覽
添加回答
舉報