使用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
});
这应该可以修复