プロが教えるわが家の防犯対策術!

php(5.5)を使って、JavaScriptによりFORMで入力した文字をエラーチェックを行った後、他のスクリプトを呼び出す処理を行っています。(Windows2012)

FORM内には、TEXTAREAで改行の入った文字が含まれており、その値をJavascript内で受け取って渡すせいなのか、その間に改行コード(0D0A)が抜け落ちてしまっているようです。

html上までは、$_POST['vsmemo'];として受けとった値に0D0Aが入っていることは確認できましたので、Javascript上で0D0Aを含んだまま、別のphpスクリプトに渡すことは出来ないでしょうか?

あるいは、Javascriptはエラーチェック処理だけにして、直接Formから呼び出すのが普通なのでしょうか?(そのやり方が判らなかったため)

解決策がありましたら、アドバイス頂けましたら幸いです。

ソースはこんな感じです。長いので不要な部分はカットしてあります。
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>
</head>
<script type="text/javascript">
<!--
function BodyUpdate(){
var myurl;
var vsmemo = document.f1.vsmemo.value;
// 略 ※ここで他項目のエラーチェック処理が入り、エラー時はExit;
myurl = "DBUpdate.php? + "vsmemo=" + vsmemo;
location.assign(myurl);
}
// 略 Mysql よりデータをGet → $fvsmemo
<form name="f1" action="" method="post">
<?php
print "<textarea name='vsmemo' rows='7' style='width:240px;' wrap='hard'>{$fvsmemo}</textarea>";
?>
<input type='submit' value='' onclick='BodyUpdate(); return false;'>
<input type='submit' value='戻る' onclick='Form_exit(); return false;'>
</form>

質問者からの補足コメント

  • こんな感じで出来ました。 どうも有難うございました。
    <script type="text/javascript">
    <!--
    function BodyCheck(){
    エラーの場合 return false;
    document.f1.submit();
    }
    </script>

    <form name="f1" action="update.php" method="get">
    <textarea name='vsmemo' rows='7' style='width:240px;' wrap='hard'></textarea>
    <input type='submit' value='送信' onclick='BodyUpdate(); return false;'>
    </form>

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/10/02 19:49

A 回答 (1件)

formがPOSTを指定しているのにわざわざスクリプトでGETにする必要があるのでしょうか?


どうしてもというならformのmethod自体をGETに変更したうえで普通にsubmitする方が現実的では?

とくにjavascriptにはurlエンコードのまっとうに使える機能がないので
命題のようなやり方は、かなり無理があるでしょう。
この回答への補足あり
    • good
    • 0
この回答へのお礼

yambejpさん 有難うございました。
基本的なことが判っていないまま、サンプルを見ながら寄せ集めで作っているのでこういうことで行き詰るんですね。^^;

<form name="f1" action="update.php?memo=<? print $_GET["vsmemo"]; ?>" method="get">
<textarea name='vsmemo' rows='7' style='width:240px;' wrap='hard'></textarea>
<input type='submit' value='送信' onclick='BodyUpdate();'>
</form>

このような感じだと思うのですが、さらにお聞きして申し訳ないんですが、これで、エラーが発生した時は、ScriptでFalseを返せば、actionが実行されないんでしょうか?

お礼日時:2015/10/02 18:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!