2011-06-27 13 views
0

以下のinkedmnで指摘したように、私はもともとコードの壁に相当するものを投稿しました。誰も私を助けることができませんでした。だから、新しい質問/スレッドを作成するのではなく、私はこれをやり直すことにしました - タイトルは依然として質問に適用されます。jQueryフォームプラグインを実装するのに手助けが必要

私はjQuery Formプラグインを実装しようとしています。最終的な目標は です。1)提出前にフォームを確認します。 2)選択したファイルをアップロードします。 3)送信されたフォームデータを処理スクリプトに送信し、ファイルとフォームデータをデータベースに書き込みます。

私の最初の 3種類のajaxプラグインを使用したこの試行はすべて失敗しました。だから私は、2つのフォームフィールドをスクリプトに送信する単純なajaxフォームから始めて、成功した実行を返し、それを示すメッセージを表示することになっています。その後、データを処理してからファイルをアップロードしたいと思っています。

次のコードは、jQueryフォームプラグインのサンプルコードから取得したものです。

はここで、フォームのHTMLです:

<form id="myForm" action="testProcessAjaxUploadForm.php" method="post"> 
    Name: <input type="text" name="name" /> 
    Comment: <textarea name="comment"></textarea> 
    <input type="submit" value="Submit Comment" /> 
</form> 

はここでjQueryのコードです:

// bind 'myForm' and provide a simple callback function 
$('#myForm').ajaxForm(function() { 
    alert("Thank you for your comment!"); 
}); 

そして、ここでは、は、検索フォームデータを処理するので、JavaScriptを何かを返すようにを想定しているPHPのコードです警告表示:

<?php 
    require_once ('../scripts/logging.php'); 
    $log = new Logging(); 

    if (isset($_POST['comment']) && isset($_POST['name'])) { 
     $log->lwrite('name: ' . $_POST['name'] . ', comment: ' . $_POST['comment']); 
    } else { 
     $log->lwrite('Nothing passed to the script.'); 
    } 

    //return true; 
    return $_POST['name']; 
    //echo $_POST['name']; 

最初のロギング行はログファイルに書き込むので、スクリプトが実行されていることがわかります。いずれかのリターン行が使用されると、ブラウザはアドレスバーにスクリプトファイル名の空白ページをロードします。エコーが使用されている場合、その名前がページに表示され、アドレスバーにスクリプトのファイル名が表示されます。いずれにしてもjavascript Thank Youメッセージは決して表示されません。

私には何が欠けていますか?

UPDATEは、PHPコードは、私はそれを書いた方法で正しく動作します。つまり、投稿されたフォームフィールドを使用して使用することができます。 jQueryフォーム・プラグインのサンプル・ページには、「サーバーが成功状況を返した場合、ユーザーに「ありがとうございました」というメッセージが表示されます。だから私の質問は、 "ありがとうございましたメッセージが表示されるようにjQueryコードが正常な応答を検出する原因となるPHPスクリプトが返されると思いますか?

Link to testing page PHPスクリプトの内容は同じで見ることができますファイルcomment.txtでWebページとしてフォルダ

+0

あなたは特定の/問題や質問を提供しても、あなたはおそらく人々が答えを得るのを助けることができます。あなたは、あなたの問題の細部の方法ではなく、並べ替えのために非常に多くのコードを投稿しました。 – inkedmn

+0

ポイントは十分に取られています。私は**知っている**それは多くのコードを見ることです。私はそれを投稿したときに思ったほど多かったですが、どこから始めるべきか、セットアップが何を起こさないのかを突き止める方法はありませんでした。私の投稿の最初の段落には埋め込まれていますが、コードが現在行っていることを繰り返し述べます:ファイルはアップロードされ、必要に応じて情報がデータベースに書き込まれますが、ページは更新されます。私が**既存のコードで**を期待しているのは、表示するアラートで**ページは更新されません**。もし誰かが私が簡単にトラブルシューティングをしなければならないものを取り除く方法を提案できるなら、それはすばらしいでしょう。 – marky

+0

空白のページが表示されたら、PHPスクリプトに問題があると思います。私はあなたのPHPをトリミングして、非常に基本的で簡単にエラーをスキャンし、それが動作するかどうかを確認し、そこからPHPスクリプトを構築することをお勧めします。 – jsonnull

答えて

1

はあなたのJavaScriptが代わりにこのような何かを試してみてください:

// bind 'myForm' and provide a simple callback function 
$('#myForm').ajaxForm({ 
    success: function() { 
     alert("Thank you for your comment!"); 
    }); 
}); 

何をお使いのPHPのリターンは重要ではありません - それは本当であることができ、またはステートメントをエコー。 「成功」はサーバーからのもので、ページが正常に読み込まれると「成功」ステータスが返されます。ページが存在しない場合、またはアクセスが禁止されている場合は、エラーコードが返されます。

+0

これは、例のページをまっすぐにして、私はそれを試してみました - オプションのオブジェクトにURLと型属性を移動し、 "$( '#myForm')。ajaxForm(options);"呼び出したり、PHPスクリプトにデータを渡す! – marky

+0

このサンプルが提供するものを正確に試しましたか? jQueryコードが "$(document).ready()"関数に読み込まれていますか?どのように設定したら、JSは動作しますが、オプションを使用したときには、正しく設定されていない可能性があります。サンプルページにどのように表示されているか正確にコピーしてみてください。 –

+0

Chris、私はHTMLページを再作成し、JavaScript /フォームをコピー/ペーストして、それが正しいと確信しました。私は単に投稿されたデータを記録するcomment.phpファイルを追加しました。 **同じ結果** :(ブラウザは空白のページでcomment.phpファイルを読み込んだのですが、なぜ警告が表示されないのですか?これはイライラしています。私のパブリックフォルダ - ここ[http://www.eventidewebdesign.com/public/testUpload/testAjaxUploadForm.php]を見てください。あなたは.../testUpload/commentのPHPスクリプトを見ることができます。 txt – marky

0

あなたのフォーム要素

<input type="submit" value="Submit Comment" />

は、あなたが投稿した変数に新しいページにスクリプトをロードするために引き起こしている。これは、あなたのAJAX機能があることを意味しますブラウザのためにリターンを実行する時間がないあなたのために新しいPHPページを直接読み込んでいます。これを防ぐには、送信ボタンからtype="submit"を削除して、ブラウザがPHPスクリプトに自動的に移動しないようにする必要があります。

このようにして、ajaxが非同期に実行されている間、ページを離れずにコールバック機能(この場合は、ありがとうございます)が表示されます。

+0

私は専門家ではありませんが、私が作業しているサイト全体にボタンの送信ボタンの属性があり、すべてがajaxを使用しているため、タイプ属性を削除する理由に同意していません。また、ボタンからtype属性を削除したとき、value属性が表示されたプレーンボックスになり、unclickableでした。 – marky

+0

ボタンタグに変更します。実際、あなたのブラウザは送信ボタン付きの新しいページを自動的に読み込むので、それをクリックして非同期にロードするのではなく、実際のP​​HPページに移動すると、これが起こります。 – jsonnull

関連する問題