【发布时间】:2015-05-05 21:11:35
【问题描述】:
更新: 好的,感谢下面 OneSneakyMofo 的帮助,我设法使用 ajax 调用 submit.php 表单并让它返回例如 echo 语句。我的问题是我的 $post 值都没有被继承,例如,如果我使用 if (isset($_POST['pizzacrustformid'])) { 启动我的 php 脚本,那么当我执行 var_dump 时,javascript 也会返回空白($_POST);, 没有保存任何内容,这意味着数据没有被转移,只是调用了 php 脚本。请让我知道我是否需要做一些事情才能让 POST 信息从表单中转移出去,就像使用 按钮传统上。 我已经在 Github 上更新了我的代码以反映我的进步。 https://github.com/dhierholzer/Basiconlineordering 再次感谢!
原帖: 我是使用 jquery 并在不加载新页面/刷新页面的情况下提交表单的新手。
在我的代码中,我在一个页面上有多个表单,通过点击下一步按钮通过淡入和淡出效果一次显示一个。
我的问题是现在我这样做了,当我点击下一步按钮以将这些表单选项保存到会话中时,我似乎无法激活 PHP 脚本。
所以这里是一个例子:
<!--First Pizza Form, Pick Pizza Crust Type-->
<div id="pizzacrust">
<form method="post" name="pizzacrustform" id="pizzacrustformid">
<div id="main">
<div class="example">
<div>
<input id="freshpizza" type="radio" name="pizzacrust" value="1" checked="checked"><label style="color:black" for="freshpizza"><span><span></span></span>Fresh Dough</label>
</div>
<div>
<input id="originalpizza" type="radio" name="pizzacrust" value="2"><label style="color:black" for="originalpizza"><span><span></span></span>Original</label>
</div>
<div>
<input id="panpizza" type="radio" name="pizzacrust" value="3"><label style="color:black" for="panpizza"><span><span></span></span>Deep Dish Pan</label>
</div>
</div>
</div>
</form>
</div>
<div><button href="#" id="btn">Show Pizza Size</button></div>
所以这是我的第一个表单,需要注意的一点是,我使用普通按钮而不是 按钮,并使用 javascript 来完成提交部分。
这是 Javascript:
<!--Controls All Button Fades-->
$('#btn').click(function(e){
$('#pizzacrust, #btn').fadeOut('slow', function(){
$('#pizzasize, #btn2').fadeIn('slow');
$('#pizzacrustformid').submit();
});
});
然后:
$(document).ready(function () {
$('#pizzacrustformid').on('submit', function(e) {
e.preventDefault();
});
});
现在作为一名 php 程序员,我只是在表单中有一个按钮,然后我的 php 通过以下方式激活:
if (isset($_POST['submitted'])) { //MY Code To save values into sessions}
当我通过 javascript 函数提交表单时,我似乎无法获得类似的函数。
这是我在 GitHub 中的完整代码,可以更轻松地查看更多信息,了解这些表单现在如何协同工作。
https://github.com/dhierholzer/Basiconlineordering
请告诉我任何可能的解决方案 再次感谢。
【问题讨论】:
-
在我看来,除了执行提交的 ajax 调用之外,您拥有一切......
-
实际上,您似乎为#pizzatoppingsformid 定义了一个ajax 调用。那样有用吗?你在控制台中得到了什么?
-
是的,这是我从互联网上提取的代码片段,但是我使用 ajax 的有限经验限制了我使用它的能力,足以知道我需要摆脱它。我是猜测我需要通过 ajax 将表单 $post 数据发送到 PHP,然后只是没有返回它,因为 PHP 是服务器端语言,将它存储到会话中,直到我稍后将它粘贴到数据库中。但我什至可能是让它不返回任何东西是错误的。请让我知道这是否是我需要做的一般想法。任何代码也将不胜感激。
-
在执行
e.preventDefault()之后会阻止表单以“正常方式”提交,您可以执行 POST 调用,例如:$.post( 'your_php.php', $('#pizzacrustformid').serialize(), function(data) { alert('AJAX call done, response: ' + data });。信息将通过 AJAX 发送,您的 PHP 将使用$_POST照常工作。在回调函数(我在其中执行alert())内部执行更新网站所需的操作(显示成功消息或其他)。
标签: javascript php jquery ajax forms