[英]Retrieve post data with ajax
我試圖通過ajax將值itest發送到myfile.php,但是$ _POST ['itest']; 沒有檢索任何數據。
的html:
<form name=test>
<input name=itest>
<button>Send</button>
</form>
js:
$(document).ready(function() {
$("form[name='test']").submit(function(e) {
e.preventDefault();
var itest = $("input[name=itest]").val();
$.ajax({
type:'POST',
url:'myfile.php',
data:itest
});
});
});
myfile.php
<?php
echo $_POST['itest'];
/* no data on $_POST['itest']; !!! why ? */
?>
需要微調! 救命 !
您沒有將過帳數據作為對象發送。
data
參數必須是一個對象。 您只傳遞一個值。
jQuery.ajax狀態:
數據類型:PlainObject或String要發送到服務器的數據。 如果還不是字符串,則將其轉換為查詢字符串。 它被附加到GET請求的URL上。 請參閱processData選項以防止這種自動處理。 對象必須是鍵/值對 。 如果value是一個Array,則jQuery會根據傳統設置(如下所述)的值,使用相同的鍵序列化多個值。
您需要用對象替換itest
。
var itest = $("input[name=itest]").val();
$.ajax({
type:'POST',
url:'myfile.php',
data: {'itest' : itest}
});
如果我們打算以通常的方式發布表單中的所有值,則可以通過使用一些jQuery $(this).serializeArray()
替換笨拙的對象常量來改進先前的代碼。 $(this)
引用表單, serializeArray()創建一個JavaScript對象數組,准備由jQuery.ajax使用 。
$(document).ready(function () {
$("form[name='test']").submit(function (e) {
e.preventDefault();
// This line added intentionally to show the data/data format used
console.log(JSON.stringify($(this).serializeArray()));
$.ajax({
type: 'POST',
url: 'myfile.php',
data: $(this).serializeArray()
});
});
});
問題是,您的數據參數錯誤。 您需要發送一個application/x-www-form-urlencoded
字符串(例如a=1&b=2
)或一個對象常量,例如{a: 1, b: 2}
。 您正在發送一個字符串值。
試試這個
var formData = $(this).serialize();
$.post('myfile.php', formData);
並將您的按鈕設為提交類型
<button type="submit">Send</button>
我什至會努力使您的JS更加便攜
<form action="myfile.php" method="post" id="test">
<input name="itest">
<button type="submit">Send</button>
</form>
和JS
$('#test').on('submit', function(e) {
e.preventDefault();
$.post(this.action, $(this).serialize());
});
$(document).ready(function() {
$("form[name='test']").submit(function(e) {
e.preventDefault();
var itest = {'itest' : $("input[name=itest]").val()};
$.ajax({
type:'POST',
url:'myfile.php',
data:itest
});
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.