2013-07-05 56 views
0

我有一個PHP文件中的表單,它接受用戶輸入的值並將數據發送到.txt文件。php變量在jquery.ajax請求

現在,當表單填寫完畢後,單擊'提交'按鈕並將用戶發送到'確認/完成'頁面,同時將收到的數據放入.txt文件時,它工作正常。

我想要做的就是使用ajax和jquery使表單=>完成/確認而不發送到其他頁面。

問題是用戶數據現在沒有被傳輸到.txt文件。

PHP:(confirmation.php)

<?php 
    $color = $_POST['color']; 
    $fp = fopen('userdata.txt', 'w'); 
    $valstring = "What Color: " . $color . "\r\n"; 
    fwrite($fp, $valstring); 
    fclose($fp); 
?> 

AJAX/JQUERY:(按鈕從form.php的點擊)

$(document).ready(function() { 

var cir = { 
    load: $('<div />', { class: 'loading' }), 
    contain: $('#contain') 
} 

$('input[type="submit"]').on('click', function(e) { 
e.preventDefault(); 

    $.ajax({ 
     url: 'confirmation.php', 
     type: 'POST', 
     beforeSend: function() { 
      cir.contain.append(cir.load); 
     }, 
     success: function(data) { 
      cir.contain.html(data); 
     } 
    }); 
}); 

}); 

當使用userdata.txt文件上面的AJAX僅具有What Color:進入它。用戶選擇的$color值未被識別。

我知道代碼沒有ajax,但我希望有ajax(無頁面刷新)方法,如果可能的話。

在此先感謝您的幫助。

回答

1

你必須設置你的Ajax調用的data參數,這樣的事情應該工作:

<form> 
    <select name="color" id="color"> 
     <option value="Red">Red</option> 
     <option value="Green">Green</option> 
    </select> 
    <select id="age"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
    </select> 
    <input type="text" id="name" /> 
    <input type="submit" value="SEND" /> 
</form> 

$('input[type="submit"]').on('click', function(e) { 
    $.ajax({ 
    url:'confirmation.php', 
    type:'POST', 
    // get the selected values from 3 form fields 
    data:'color=' + $('#color').val() + 
      '&age=' + $('#age').val() + 
      '&name=' + $('#name').val(), 
    success:function(data) { 
     // ... 
    } 
    }); 
    return false; 
}); 

你或許應該閱讀有關jQuery.ajax

+0

謝謝你試圖幫助我。我的表單有'method =「POST」'和'action =「confirmation.php」'set。這是需要的嗎?另外,我收到的用戶價值來自'選擇'。用戶值取自下拉選項,這是否改變了事情? – user1648449

+0

如果你通過ajax發送數據,不需要它。試試看看它是如何工作的。如果你有一個選擇字段,你應該將該字段的'id'設置爲'color',以使上述代碼正常工作。 「返回false」部分將阻止表單以普通方式發送。 – Cyclonecode

+0

好吧,使用你的代碼將值發送到confirmation.php頁面(我使用'echo'函數來檢查),但是userdata.txt文件是空的。 '$ valstring =「什麼顏色:」。 $顏色。 「\ r \ n」;'不被識別。價值正在繼續。 – user1648449

0

你是不是發在你的Ajax後的任何數據,因爲這個原因變量$顏色它是空的在confirmation.php 嘗試改變這一點:

$.ajax({ 
    url: 'confirmation.php', 
    type: 'POST', 
    beforeSend: function() { 
     cir.contain.append(cir.load); 
    }, 
    success: function(data) { 
     cir.contain.html(data); 
    } 

附:

var formColor = $("#colorId").val(); //where ColorId it's the color input type ID 
$.ajax({ 
    url: 'confirmation.php', 
    type: 'POST', 
    data: { color: formColor }, 
    beforeSend: function() { 
     cir.contain.append(cir.load); 
    }, 
    success: function(data) { 
     cir.contain.html(data); 
    } 
+0

感謝您的幫助,但它沒有奏效。也許我已經搞亂了我的代碼。我使用'select'和'option'標籤,因爲我的數值以下拉列表顯示。 – user1648449