使用ajax jquery运行php脚本
using ajax jquery to run php script
使用Codeigniter,我试图在用户单击提交按钮后运行php脚本。我已经遵循了相当多的教程,并提出了以下代码:
如果查看实际页面有帮助,您可以访问此处:http://rickymason.net/townbuilder访客/访客登录(当前需要)
在我看来(structures.php),我有:
<div id="structures">
<h1>Build</h1>
<form name="buildForm" id="buildForm" method="POST">
<select name="buildID" class="buildClass">
<option value="0" selected="selected" data-skip="1">Build a Structure</option>
<?php foreach ($structures as $structure_info): ?>
<option name='<?php echo $structure_info['str_name'] ?>' value='<?php echo $structure_info['str_id'] ?>' data-icon='<?php echo $structure_info['str_imageloc'] ?>' data-html-text='<?php echo $structure_info['str_name'] ?><i>
<?php echo $structure_info['timebuildmins'] ?> minutes<br><?php echo $structure_info['buy_gold'] ?> gold</i>'><?php echo $structure_info['str_name'] ?></option>
<?php endforeach ?>
</select>
<div id="buildSubmit">
<input class="button" type="submit" value="Submit"/>
</div>
</form>
</div>
<div id="output"> Result here</div>
这将创建我的选择表单并在html中创建它。然后我创建了一个.js文件来运行ajax:
$("#submit").submit(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: '../php/build.php',
data: "",
dataType: 'json',
success: function(data)
{
alert("success!");
}
});
});
我尽量保持简单,只是为了测试的目的。Javascript对我来说是个新手,出于某种原因,我觉得它非常令人困惑。据我所知,这个脚本应该在按下提交按钮后激活。然后,它运行build.php脚本,如果通过json返回echo,则会提醒成功。正确的
我的build.php脚本如下:
<?php
$query = "INSERT INTO user_structure (str_id, user_id) VALUES ('7', '7')";
mysql_query($query) or die ('Error updating database');
echo "success";
?>
同样,非常简单。。。
不幸的是,当我点击提交时,页面似乎"刷新"了,但什么也没发生。我不希望页面上发生任何事情,但数据库也没有接收到任何值。
我在控制器或模型中没有build.php或build.js文件,它们在应用程序目录之外,在CI uri/url结构之外访问。
到目前为止,我只是试图通过单击提交来成功运行php脚本。我的最终目标是获取为表单创建的str_id值,然后将该变量和user_id传递到build.php文件中,创建数据库条目,然后刷新页面以显示更新的数据库信息。
显然,它不起作用!如有任何帮助,我们将不胜感激。
该脚本适用于id为"submit"的元素(因为您使用"#submit"
作为选择器)
使用点击事件而不是提交
要么你可以像这个一样给你的提交一个id
并像这样使用
$("#btnSubmit").click(function(e){
// your rest of code
});
或者使用类名
$(".button").click(function(e){
// your rest of code
});
但是使用id总是更好的,因为只有一个(而且应该是)元素具有id。多个元素可以具有相同的类。
为form
:添加action
属性
<form action="build.php" name="buildForm" id="buildForm" method="POST">`
或:
<form action="<?php /* Script code here */ ?>" name="buildForm" id="buildForm" method="POST">`
您的jquery代码以id为"submit"的元素为目标,但是,您的表单的id为"buildForm",因此代码不以表单为目标,当您单击提交时,它只是继续其正常行为,这会导致屏幕刷新。要解决此问题,请更改jquery代码中的选择器
$("#buildForm").submit(function(e){
// the rest of the code here remains
});
这应该可以修复
- php脚本中无法识别ajax传递的值
- 使用JS在服务器上运行PHP脚本
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- jQuery DataTable返回带有数据的PHP脚本
- 通过JavaScript设置的表单字段的值不会作为$_POST的一部分传递给PHP脚本
- 单击Dojo按钮执行PHP脚本
- 将javascript函数传递给.php脚本
- 使用Ajax或JavaScript选择下拉列表选项后,在同一页面上执行PHP脚本
- AJAX和php脚本后添加的表单元素未传输到$_POST
- jquery ajax到php脚本不保存数据
- 有没有一种方法可以生成Braintree令牌,而不必向我的服务器添加PHP脚本
- 如何使用jQuery将所选文件传递到php脚本
- PHP脚本在Lion上通过Ajax运行时会回显自己的内容
- Codeigniter :通过 AJAX 调用 php 脚本时路由不起作用
- 使用 jQuery 从运行 MySQL 的 PHP 脚本返回信息
- 我将如何在将数据发布到 php 脚本的 javascript 脚本中输入变量
- 在 ajax 成功中触发 php 脚本
- 使用同一页面上的按钮访问 php 脚本
- 从 PHP 脚本预缓存第二个图像