人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

自ファイルにsubmitしたら、ループ状態になったJavaScript

Console.jsを使用しデバックした結果、ループになるケースついてです。
例】ユーザがサーバに対して、登録メールアドレスに変更をかける
(ブラウザ:Chrome11, iPhone4-Safari)
<html>
<head>
<script type="text/javascript" src="Console.js"></script>
<script type="text/javascript" src="inc.js"></script><!-- goAction()を定義 -->
<script type="text/javascript">
<!--
function wait() {
Console.print("Hello !");
if ( goAction ) {
Console.print("Hello ! goAction ");
if(document.FRM1) {
Console.print("Hello ! FRM1");
return
}
}
setTimeout("wait()", 200);
}
wait();
-->
</script>
</head>
<body>
<?php
if ($_POST['update'] != 'true'){
?>
<form name="FRM1">
<input type="hidden" name="update" value="true">
<INPUT type="button" onclick="goAction()" value="送信"><!-- 自ファイルへsubmitさせる -->
</form>
<?php
}
else
{
/* 省略:POSTデータでDBに更新をかけ、成功したら
更新結果をhtml表示する
*/
}
?>

DBのデータ更新が成功し、再び自ファイルがhtml表示された後、
Console.print()の表示結果が、
Hello !
Hello ! goAction
...
のループ状態になってしまいます。
( 500文字制限のため.皆様の返信にコメントで追記するつもりです.)

1308128257
●拡大する

●質問者: gdwtseq
●カテゴリ:ウェブ制作
✍キーワード:.fr Console dB Hello HTML
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Cherenkov
●500ポイント ベストアンサー

(何度も更新してすいません)

(window.onloadでgoActionすればwait関数がいらない?)



ソースコードの貼り付けなら https://gist.github.com/ などにどうぞ。

◎質問者からの返答

早速のご回答ありがとうございます。

goAction()ついて;

if(goAction)の部は、goAction()が定義されたかをチェックしているだけです。

==include.js==

function goChgAddr(){

var form_obj = document.FRM1;

var mailaccount_txt = form_obj.mailaccount.value;// 実際は<input type="text" name="mailaccount">が在る(質問では字数節約の為、省いていた)

//文字チェック

if( !mailaccount_txt.match(/^[0-9a-zA-Z_\-]+([0-9a-zA-Z_\.\-]+)*$/) )

{

alert("使用可能な文字は\n半角英数字・ドット・ハイフン・'_'\nです");

return;

}

if (!confirm("メールアドレスを変更します。\nよろしいですか?")) return;

form_obj.setAttribute('action', './chgaddr.html');

form_obj.submit();

}

=============

・console.logに切り替えても、ログがループ状態で表示されました。

しかし、何かの拍子で、ページを何回か更新したのが良かったのか、

ループがなくなりました。

なんだか、腑に落ちないです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ