AJAX 未将用户输入从表单发送到 PHP 脚本

Posted

技术标签:

【中文标题】AJAX 未将用户输入从表单发送到 PHP 脚本【英文标题】:AJAX not sending user-input from a form to PHP script 【发布时间】:2016-06-04 20:31:15 【问题描述】:

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

我真正能说的是,输入的任何内容都没有通过,但我还没有到可以说出原因的地步。我尝试过使用 POST 和 GET 以及各种数据类型,结果相同。我确定我做错了什么或误解了什么,但我不确定是什么。

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 数据?我还是很迷茫。

【问题讨论】:

你错过了#登录var verb = $ ("word1").val(); @Anant:好朋友,你支持别人……向我的朋友致敬。 @Anant:点赞兄弟 @Anant 我已经尝试运行这里给出的代码,但它没有给我任何不同的结果。 @Anant 好的,我现在明白了。我误会了什么。你的回答是正确的。谢谢。 【参考方案1】:

三个变化:-

1.var verb = $ ("word1").val(); 必须是var verb = $ ("#word1").val();,因为它的 id (word1)

2.data: "verb", 必须是data: "verb":verb,

3.form提交需要正确所以下面给出的代码(缺少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",
        );
   );
);

【讨论】:

你是给出这个答案的人......赢得我的投票兄弟。它也将解决:data: "verb="+verb, 我建议。 var verb = $ ("#word1").val(); 是否完美运行?我认为这里$ ("#word1")$( 之间的差距。 只是让您知道,没有丢失)。这是它需要的地方, 之后的第 12 行【参考方案2】:

您不能在 ajax 中以 data: "verb", 发送数据。你需要在参数中发送你的数据。

其次,word1输入的值无法获取为$("word1").val();,需要使用#通过ID获取输入。

示例:

$(document).ready(function()
    $( "#my_form" ).submit(function( e )  //CHANGED using submit event.
        e.preventDefault();
        var verb = $("#word1").val(); //CHANGED
        $.ajax(
        url: "testrun.php",
        data: "verb="+verb, //CHANGED
        type: "POST",
        );
    );
);

【讨论】:

这里需要更改:- $("#my_form").on(function(e) 它不会提交表单。只是一个建议【参考方案3】:
    您忘记了 # 的敌人 ID 选择器 word1.on() 需要绑定事件。在您提交表单的情况下,它是submit

    数据应该作为对象传递。在您的情况下,您将能够使用$_POST['verb'] 访问它

    $(document).ready(function ()
    
        $("#my_form").on('submit', function (e)
        
            e.preventDefault();
            var verb = $("#word1").val();
            $.ajax(
                url: "testrun.php",
                data: verb: verb,
                type: "POST"
            );
        );
    );
    

【讨论】:

【参考方案4】:

您错过了# 登录var verb = $("word1").val();

并将变量用作data 的变量,例如data: "your_var_name" : verb

【讨论】:

还有一点需要改变【参考方案5】:

试试这个 ...

$.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
  
);

【讨论】:

【参考方案6】:

你必须这样做:

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

verb是变量,引号之间不用加!

正确答案是 HEREAnant

【讨论】:

kermani 仍然需要在 OP 的代码中更改很多东西。请检查我的答案 @Anant 是的,我看到了你的答案,甚至投了赞成票。你的答案是正确的。谢谢 @Anant Man 你太棒了,我打开了你的个人资料,你回答了很好的问题。我对你的一些答案投了赞成票。我相信正确的东西应该在 *** 中。我希望对社区有所帮助 @Anant 谢谢,我不知道。但这些答案很棒,需要得到支持和投票

以上是关于AJAX 未将用户输入从表单发送到 PHP 脚本的主要内容,如果未能解决你的问题,请参考以下文章

通过 PhP 将 HTML 表单发送到电子邮件时遇到问题 [重复]

将数据从 HTML 表单发送到 Flask 中的 Python 脚本

PHP mail()表单发送到GMAIL垃圾邮件[重复]

php表单发送到邮箱V1.0

使用 jquery .ajax 从 mySQL DB 中检索记录

织梦cmsf表单提交到邮箱 织梦表单发送到邮箱 织梦自定义表单发邮箱