使用Codeigniter,我試圖讓用戶點擊一個提交按鈕後運行一個php腳本。我跟了不少的教程,並拿出了下面的代碼:使用ajax jquery運行php腳本
如果這將有助於看到實際的頁面,您可以訪問這裏:http://rickymason.net/townbuilder 客/客登錄(目前要求)
在我看來(結構.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返回一個回顯,它會提示成功。對?
我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文件中,創建數據庫條目,然後刷新頁面以顯示更新的數據庫信息。
很明顯,它不工作!任何幫助將不勝感激。
'回聲 「成功」;'不會返回一個JSON字符串。你也不會阻止提交表單。你真的需要所有那些打開/關閉php標籤來建立你的選擇框嗎? – PeeHaa 2012-03-05 16:43:49
首先,你沒有什麼ID =「submit」,jQuery應該選擇什麼? – 2012-03-05 16:44:53
謝謝,我在發佈代碼之前刪除了id ='submit'。我這樣做是因爲我模仿的一個具體例子沒有,因爲我相信他們正在調用表單名稱。感謝您指出了這一點。 – 2012-03-05 16:59:52