繁体   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