1

ユーザーが入力するフォームがあり、フォームを送信したり、データをプレビューしたりできます。ユーザーがデータをプレビューすることを選択した場合は、フォームを再度表示するのではなく、見栄えの良いページにまとめます。ここから送信を押すか、フォームに戻ることができます。このフォーラムの @JFK と @jerdiggity のおかげで、見栄えの良いプレビューが表示されます。プレビュー iframe から送信を押すと、sendMessageclass.php というファイルで関数を呼び出そうとしています。私のプレビュー ペインでは、最後に次の 2 つのボタンがあります。

    <a class="submit btn login-submit" name="saveData" href="javascript:;">Submit</a>
    <a class="closeFB btn login-submit" href="javascript:;">Back to Edit</a>

preview.php ファイルの先頭には、次のものがあります。

    $(document).ready(function(){
       $('#saveData').live('click', function() {
          $.post('classes/sendMessage.class.php?\__construct');
    return false;
    });

__construct 関数は次で始まります。

    if(!empty($_POST)) {
         foreach ($_POST as $field => $value)   
          .........

フィールドの検証を続けてから、データベースに送信します。フォームを送信すると(プレビューを実行せずに)、データがデータベースに正常に挿入されるため、この部分が機能することはわかっています。送信を押したときの Firebug のエラーは次のとおりです。

 TypeError: e[h] is not a function

また、sendMessageclass.php に以下の行を追加して、プレビュー ボタンではなく、送信ボタンが押されていることを確認しました。

if (isset($_POST['submit'])) {

preview.php ファイルから送信ボタンを押したときに sendMessageclass.php を呼び出す方法はありますか?

4

1 に答える 1

0

これらのオプションのいずれかを試すことができると思います:

1)。HTMLのname属性を置き換えます

<a class="submit btn login-submit" name="saveData" href="javascript:;">

idのような属性によって

<a class="submit btn login-submit" id="saveData" href="javascript:;">

name...セレクタを使用して属性を持つ要素を参照することはできません#saveData

このJSFIDDLEを確認すると、リンクをクリックしてname="nameData"も何も返されないことがわかります。

2)。現在のスクリプト セレクターとフォーマットを置き換えます

$('#saveData').live("click", function(){ ... })

... に

$("body").on("click", "a[name=saveData]", function(){ ... })

... html を変更せずに、name属性を保持します。

.live()廃止されたため、委任された形式で使用していることに注意してください.on()(ただし、jQuery 1.7+が必要です)

また、親コンテナーのセレクターbodyによって要素を変更できることにも注意してくださいa[name=saveData]

于 2013-06-09T01:50:19.907 に答える