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 脚本