2

私は ajax が初めてで、自分のプロジェクトに入れるのは楽しい実験になると思っていました。作成中の Web サイトでメッセージを送信するために、独自のライトボックス タイプの機能を作成しました。ユーザーが「メッセージを送信」をクリックすると、ライトボックスが表示され、上部に「ユーザーにメッセージを送信」と表示させようとしています。ここで、ユーザーはメッセージを送信しているユーザーの名前です. 私のライトボックスの HTML 要素は、実際には別の Web ページにあるため、ajax を使用しています。これは私がこれまでに持っているものであり、問​​題が何であるかを理解できないようです:

user.php ページ

<div id = "pageMiddle"> // This div is where all the main content is.
  <button onclick = "showMessageBox(UsersName)">Send Message</button>
</div>

注:ユーザー名はjavascript関数に正しく渡されます。私はそれをチェックしました。

main.js ページ

function showMessageBox(user){
  alert(user); // where i checked if username passes correctly
  var ajaxObject = null;
  if (window.XMLHttpRequest){
    ajaxObject = new XMLHttpRequest();
  }else if (window.ActiveXObject){
    ajaxObject = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (ajaxObject != null){
    ajaxObject.open("GET", "message_form.php", true);
    ajaxObject.send("u="+user);
  }else{
    alert("You do not have a compatible browser");
  }
  ajaxObject.onreadystatechange = function(){
    if (ajaxObject.readyState == 4 && ajaxObject.status == 200){
      document.getElementById("ajaxResult").innerHTML = ajaxObject.responseText;
      // use jquery to fade out the background and fade in the message box
      $("#pageMiddle").fadeTo("slow", 0.2);
      $("#messageFormFG").fadeIn("slow");
    }
  };
}

message_form.php ページ

<div id = "messageFormFG">
  <div class = "messageFormTitle">Sending message to <?php echo $_GET['u']; ?></div>
</div>

注: URL から直接このページにアクセスし、パラメーター u と値を指定すると、正しく表示されます

4

5 に答える 5

6

jQuery.ajax() を使用します。 http://api.jquery.com/jQuery.ajax/

$.ajax({
  type: "GET",
  url: "message_form.php",
  data: { name: "John", location: "Boston" }
}).done(function( msg ) {
  alert( "Data Saved: " + msg );
});
于 2013-06-24T15:26:31.083 に答える
0

それを行う奇妙な方法(古い学校):)とにかく、htmlページ全体をdivにロードしていることが問題だと思います! タグなどを意味するので、何が問題なのかを理解する良い方法は、デバッガーを使用して ajaxObject.responseText に含まれるものを確認することです。

お役に立てれば。

ところで、jQuery ajaxに変換してください!! 時間を大幅に節約できます =)

于 2013-06-24T15:27:26.473 に答える
0

データを送信する前に、リクエスト ヘッダーを追加する必要があると思います。したがって、次のようになります。

ajaxObject.open("GET", "message_form.php", true);
ajaxObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxObject.send("u="+encodeURIComponent(user));

あなたが持っているものの代わりに。

ただし、ライブラリにこれを許可することをお勧めします。すでに jQuery がロードされているようです。代わりに、jQuery で AJAX リクエストを処理してみませんか?

于 2013-06-24T15:30:47.813 に答える