簡體   English   中英

用ajax檢索發布數據

[英]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使用

jsfiddle

$(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM