使用ajax检索发布数据

时间:2014-01-08 00:17:36

标签: php jquery ajax forms post

我正在尝试通过ajax将值迭代发送到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 ? */
?>

需要微小的调整!帮助!

3 个答案:

答案 0 :(得分:2)

您不是将帖子数据作为对象发送。

data参数需要是一个对象。您只传递一个值。

jQuery.ajax州:

  

数据   键入:PlainObject或String   要发送到服务器的数据。如果不是字符串,它将转换为查询字符串。它附加到GET请求的URL。请参阅processData选项以防止此自动处理。 对象必须是键/值对。如果value是一个数组,jQuery会根据传统设置的值使用相同的键序列化多个值(如下所述)。

您需要将itest替换为对象。

var itest = $("input[name=itest]").val();
$.ajax({
        type:'POST',
        url:'myfile.php',
        data: {'itest' : itest}
});

如果我们打算在表单中POST所有值,我们通常该怎么做,我们可以通过用一些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()
        });
    });
});

答案 1 :(得分:1)

问题是,您的数据参数错误。您需要发送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());
});

答案 2 :(得分:0)

 $(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
        });
      });
    });