AJAX没有将表单中的用户输入发送到PHP脚本

时间:2016-02-23 06:13:16

标签: php ajax forms user-input

我一直在尝试通过在线学习各种教程和示例来学习基本的AJAX和Javascript,但我已经碰壁了。我正在尝试编写一个简单的脚本,使用AJAX从表单中获取用户输入并将其提交给PHP脚本,然后只回显输入。

我真正能说的是,无论输入的是什么都没有通过,但我还没有达到我能说出原因的地步。我已尝试使用POST和GET,以及各种dataTypes,结果相同。我确定我做错了什么或误解了什么,但我不确定是什么。

HTML / AJAX

<form id="my_form">
    word <input type ="text" id="word1"/><br/>
    <input type="submit">
</form>
<script>
$(document).ready(function(){
    $("#my_form").on(function(e){
        e.preventDefault();
        var verb = $("word1").val();
        $.ajax({
            url: "testrun.php",
            data: "verb",
            type: "POST",
        });        
    });
});
</script>

PHP

if (isset($_POST['verb'])){
   $x= $_POST['verb'];
   echo $x;
}else { 
   echo "not working";
}
编辑:到目前为止,我已经尝试了一些建议,直接复制和粘贴它们,并且没有一个实际上做过我能看到的任何事情。我想我已经开始更多地了解AJAX应该如何工作,基于响应,但它仍然没有达到PHP由于某种原因。我已经尝试将AJAX / HTML放在一个单独的文件中,该文件调用testrun.php脚本并将所有内容放入testrun.php文件中并基本上让它用AJAX调用自己,但这两种方法都没有取得任何成果。

如果我从响应中得到的AJAX很好,那么我是否误解了如何设置PHP以实际接收POST数据?我还是很迷茫。

6 个答案:

答案 0 :(得分:4)

三项变更:

1. var verb = $ ("word1").val();需要var verb = $ ("#word1").val();,因为其ID(word1

2. data: "verb",需要data: {"verb":verb},

3.表单提交需要正确,因此下面给出的代码(缺少submit): -

正确的代码: -

$(document).ready(function(){
    $("#my_form").on('submit',function(e){ // check here you have one missing `submit`
        e.preventDefault();
        var verb = $("#word1").val(); // remove space between `$` and `(`
        $.ajax({
          url: "testrun.php",
          data: {"verb":verb},
          type: "POST",
        });
   });
});

答案 1 :(得分:2)

您无法在ajax中以$(document).ready(function () { $("#my_form").on('submit', function (e) { e.preventDefault(); var verb = $("#word1").val(); $.ajax({ url: "testrun.php", data: {verb: verb}, type: "POST" }); }); }); 的形式发送数据。你需要以params发送你的数据。

其次,您无法将data: "verb",输入的值设为word1,您需要使用$("word1").val();来获取ID输入。

示例:

#

答案 2 :(得分:1)

您错过了在#

中的var verb = $("word1").val();签名

并使用变量作为data的变量data: {"your_var_name" : verb}

答案 3 :(得分:1)

  1. 您忘记了#的{​​{1}}敌人选择器。
  2. word1需要绑定事件。在您提交表单的情况下,它是.on()
  3. 数据应作为对象传递。在您的情况下,您可以使用submit

    访问它
    $_POST['verb']

答案 4 :(得分:0)

你必须这样做:

var verb = $("#word1").val();  //Don't forget to add #
$.ajax({
    url: "testrun.php",
    data: {"verb":verb},
    type: "POST",
});

verb是一个变量,无需在引用之间插入!

正确的答案是 HEREAnant

答案 5 :(得分:0)

试试这个 ...

$.ajax({
  type: "POST",
  url: "testrun.php",
  data: "paramname=value",  // access in php $_POST['paramname']
  success: function(data){
    // if page request is success
  },
  error: function(data){
    // if page request failes
  }
});