0

基本的に、Ajaxを使用する場合、PHPスクリプト内でJavascript関数を呼び出そうとしています。

JavaScript:

<script type="text/javascript">
    function Validate() {
        hr = new XMLHttpRequest();
        name = document.getElementById('name').value;

        hr.open('POST', 'validator.php', true);
        hr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

        hr.onreadystatechange = function() {
            if ( hr.readyState == 4 && hr.status == 200 ) {
                document.getElementById('message').innerHTML = hr.responseText;
            }
        }
        hr.send('name=' + name);
    }

    function disable() {
        document.getElementById('message').innerHTML = '';
    }
</script>

HTML:

<div id="message"></div>
Name: <input type="text" id="name /">
<input type="button" onclick="Validate();" value="Validate" />

PHP:

<?php    
   $name = $_POST['name'];    
   if ( !empty( $name ) ) {
       if ( $name == 'Tom' ) {
           echo "<script>alert('Hello Tom, Welcome Back')</script>";
       } else {
           echo 'You are not Tom';
       }
   } else {
       echo 'Please enter a name.';
   }
?>

PHP内でJavascript関数を呼び出すことを除いて、すべて正常に動作しますecho <script>alert()</script>

ここで問題があると思うのは、 を宣言hr.responseTextした結果、表示したい JavaScript がテキストに戻ってしまったためです。しかし、この問題を解決するにはどうすればよいですか?

どんな助けでも大歓迎です。

4

3 に答える 3

0

これを試して:

   function do_alert($msg){
            echo '<script type="text/javascript">alert("' . $msg . '"); </script>';
   }
   if(!empty($name)){
         if($name == 'Tom'){
             do_alert("You are tom");
          }else{
             do_alert("You are not tom");
          }
  }else{
         echo 'Please enter a name.';
   }        
于 2013-08-09T00:30:12.960 に答える
0

タグ付けしていません、使用している場合は、必要なものにjQueryなる可能性があります。$.getScript

それとは別に、スクリプトを元のドキュメントに組み込み、応答テキストに基づいてこの関数またはその関数を実行する方がよい場合があります。

于 2013-08-09T00:31:14.343 に答える