使用ajax jquery来运行php脚本

时间:2012-03-05 16:39:50

标签: php javascript mysql ajax codeigniter

使用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信息。

显然,它不起作用!任何帮助将不胜感激。

3 个答案:

答案 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
}); 

这应该解决它