使用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
}); 

这应该可以修复