2015-12-31 29 views
0

我很難創建一個簡單的表單,用於接收用戶輸入的電子郵件地址並將其存儲在服務器端.log文件中。在php中使用ajax發佈數據的變量名稱是什麼?

HTML &的JQuery的index.php中:

<div> 
    <form id="form" method="post" action=""> 
    <input name="field1" type="Your Email" id="field1" /> 
    <input type="submit" value="Sign me up!" id="submitme"> 
    </form> 
</div> 

<script> 
$("#submitme").click(function(event){ 
    event.preventDefault(); 
    var form_data = $("#form").serialize() 
    $.ajax({ 
    type: 'POST', 
    data: form_data, 
    url: 'action_page.php', 
    }); 
}); 
</script> 

我在action_page.php PHP:(即採取發佈數據,並將其保存到.LOG)

<?php 
    if (isset($_POST['form_data'])) { 
     $txt=$_POST['form_data']; 
     file_put_contents('test.log',$txt."\n",FILE_APPEND|LOCK_EX); 
     exit(); 
    } 
?> 

後點擊提交按鈕,頁面只刷新,沒有添加到我的.log文件。我覺得這個問題與我在ajax函數和action_page.php中引用數據的方式有關。我已經嘗試了所有不同的方式,我已經看到它在各種計算器的帖子中完成,但我似乎無法找到正確的方式來做到這一點。

在此先感謝。

+0

想讓它變得簡單,只是跳過ajax –

+1

你有包括jQuery嗎?拋出任何錯誤? – chris85

+0

文件權限? – Jan

回答

-1

您未通過任何名爲form_data的變量。您正在通過:data: form_data,格式爲key=value&key2=value2

一種解決辦法是將它傳遞一個新的對象:

$.ajax({ 
    type: 'POST', 
    data: { 
     form_data: form_data 
    }, 
    url: 'action_page.php', 
}); 
0

form_data去這樣,field1=value。這需要個人<input>namePOST的關鍵,所以你需要在PHP文件做的是:

<?php 
    if (count($_POST) && !empty($_POST['field1'])) { 
     $txt = $_POST['field1']; 
     file_put_contents('test.log', $txt . "\n", FILE_APPEND | LOCK_EX); 
     exit(); 
    } 
?> 

此外,我檢查!empty()而不是isset(),因爲它肯定會被設置。並且還檢查$_POST的計數,將確保這隻在POST方法中運行。

更新

注:您將無法看到屏幕上的輸出,但它被寫在文件中。您可以通過查看控制檯窗口來檢查響應。

我剛纔看到你的頁面刷新了。可能是,你忘了包含jQuery庫?你需要檢查錯誤控制檯,它應該說:

$ is not a function. 

所以要解決這個問題,懇請您<script>標籤之前添加此代碼添加jQuery庫:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

讓我知道,如果有效的話。檢查您的控制檯是否有錯誤。

相關問題