使用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文件,创建db条目,然后刷新页面以显示更新的DB信息。
显然,它不起作用!任何帮助将不胜感激。
答案 0 :(得分:1)
该脚本适用于ID为“submit”的元素(因为您使用"#submit"
作为选择器)
使用点击事件代替提交
您可以像这样给自己的提交ID
并像这样使用
$("#btnSubmit").click(function(e){
// your rest of code
});
或使用班级名称
$(".button").click(function(e){
// your rest of code
});
但是使用id总是更好,因为只有一个(并且应该是)具有id的元素。多个元素可以具有相同的类。
答案 1 :(得分:0)
为action
添加form
属性:
<form action="build.php" name="buildForm" id="buildForm" method="POST">`
OR:
<form action="<?php /* Script code here */ ?>" name="buildForm" id="buildForm" method="POST">`
答案 2 :(得分:0)
你的jquery代码的目标是一个id为'submit'的元素,但是你的表单的id为'buildForm',因此代码不会以表单为目标,当你点击提交时,它只会继续其正常行为,导致屏幕刷新,要解决此问题,请更改jquery代码中的选择器
$("#buildForm").submit(function(e){
// the rest of the code here remains
});
这应该解决它