這個想法是,這個腳本將我的HTML表單中輸入的文本的值POST到emailform.php
,該值將該數據並將其添加到.txt
文件中。我認爲我遇到的麻煩是將PHP中的$email
的值設置爲html文本輸入的值。因此,當前腳本被觸發時,我會得到兩個警報(第一個'錯誤',然後'完成',來自.fail和.complete函數),然後重新加載頁面。這就是爲什麼我認爲問題是從PHP返回的信息,但也許我錯了。將數據從AJAX轉移到PHP的問題
<form method="post">
<input type="text" name="email" value="" class="emailSubmitSidebar" placeholder=" Your Email">
<input type="submit" name="submit" value="Add" class="submitButton" id="subscribeButton">
</form>
<script type='text/javascript'>
$(document).ready(function() {
var subscribeButton = $('#subscribeButton');
subscribeButton.click(function() {
$.ajax({
url: 'emailform.php',
type: 'POST',
dataType: 'text',
data: {email: $("input[name=email]").val()},
})
.done(function(data) {
alert("Added!");
})
.fail(function() {
alert("error");
})
.always(function() {
alert("complete");
})
})
})
</script>
下面是PHP,我添加了前兩行來檢查是否有任何錯誤,其中沒有任何錯誤。奇怪的是,當我單獨運行PHP時,echo
行在頁面上打印數字3時沒有任何明顯的原因。我評論了變量$email
,因爲我被引導認爲它是更好/有必要首先檢查它是否爲isset
。
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$fileHandle = fopen('emailList.txt', 'a') OR die ("Can't open file\n");
$email= isset($_POST['email']) ? $_POST['email'] : "";
// $email=$_POST['email'];
$result = fwrite ($fileHandle, "$email; \n");
fclose($fileHandle);
echo (!$result) ? "error" : $result;
die;
?>
運行時沒有錯誤,但電子郵件沒有寫入文本文件,頁面在單擊(並且輸入顯示在URL中作爲參數)後重新加載。我該怎麼辦@ Neograph734? – trop
請用你現在擁有的東西來更新你的問題。我看到你更新了它,但錯誤的'data:('input').val()'仍然存在。然後我們可以再看看它。重新加載沒有任何意義......同時刪除'OR DIE',而是用正確的http_response_code代替錯誤。你可能想用'fwrite($ fileHandle,「$ email; \ n」);'.txt文件不明白
;) – Neograph734
我已經更新了這個問題!感謝您一直以來的幫助 :)。我已經改變了'data:'。我不知道如何用你的建議來代替「死亡」。是的,我發現
問題。查看問題中的新描述。基本上PHP腳本回應數字3,我認爲這觸發了警報。 @ Neograph734 – trop