2012-03-05 14 views
0

Codeigniterを使用して、ユーザーが送信ボタンをクリックした後でPHPスクリプトを実行しようとしています。 (現在は必須)ajax jqueryを使って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で作成されます。私はテスト目的のために、私ができるのと同じくらい簡単にそれを維持しようとした

$("#submit").submit(function(e){ 
e.preventDefault(); 
$.ajax({ 
type: "POST", 
url: '../php/build.php',   
data: "", 
dataType: 'json',      
success: function(data)   
{ 
    alert("success!"); 
} 
}); 
}); 

:私は、AJAXを実行するための.jsファイルを作成しました。 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構造の外でアクセスされます。

現在のところ、私は単にsubmitをクリックしてPHPスクリプトを正常に実行しようとしています。私の最終的な目標は、フォーム用に作成されたstr_id値を取得し、その変数とuser_idをbuild.phpファイルに渡し、dbエントリを作成し、ページを更新して更新されたDB情報を表示することです。

明らかに、動作していません!どんな助けでも大歓迎です。

+0

それを修正する必要があります;' JSON文字列を返しません。また、フォームが送信されないようにしてください。また、選択ボックスを構築するためにphpタグを開く/閉じるタグが本当に必要ですか? – PeeHaa

+0

まず、ID = "submit"のものは何も持っていないので、jQueryが選んだのは何ですか? –

+0

ありがとう、私はコードを投稿する前にid = 'submit'を削除しました。フォーム名を呼んでいると信じているので、私が模倣していた特定の例がそれを持っていなかったので、私はそうしました。それを指摘してくれてありがとう。 –

答えて

1

このスクリプト(あなたがセレクタとして"#submit"を使用しているため)idは、「提出」を持つ要素で動作します

あなたはこのように提出してIDを与えることができますいずれかの代わりに提出

のClickイベントを使用します

この

$("#btnSubmit").click(function(e){ 
    // your rest of code 
}); 
のように使用します

またはクラス名

$(".button").click(function(e){ 
    // your rest of code 
}); 

を使用するが、そこに一つだけでしょう(とする必要があります)becaues idを持つ要素をIDを使用するのが無難です。複数の要素が同じクラスを持つことができます。

+0

submit()イベントは、正しいidを持つ投稿入力があれば、もちろん –

+0

@DamienPirsy:どちらもうまく動作します – Shyju

+0

submitタグにid = 'btnSubmit'を追加しました。それから、jsを$( "#btnSubmit")に変更しました。(function(e){。私はまだデータベースに変更を加えていません。build.phpファイルが存在するのでと呼ばれ、コントローラ経由でロードされていない場合は、再度DBに接続する必要がありますか?私はそれを試み、報告します。 –

0

formためaction属性追加:あなたのjqueryのコードは、しかし、 '提出' のidを持つ要素をターゲットにし、あなたのフォームは "のIDを持つ

<form action="<?php /* Script code here */ ?>" name="buildForm" id="buildForm" method="POST">` 
0

<form action="build.php" name="buildForm" id="buildForm" method="POST">` 

ORをbuildForm 'したがって、コードはフォームをターゲットにしていないので、送信ボタンをクリックすると正常に動作し、画面がリフレッシュされます。これを修正するには、jqueryコードのセレクタを変更してください。

$("#buildForm").submit(function(e){ 
    // the rest of the code here remains 
}); 

これは `エコー "成功"

関連する問題