2009-06-03 28 views
0

私は、ユーザーが互いにメッセージを送信できるメッセージングシステムを作成しました。これは正常に動作しますが、回答が返ってきたら別のページに移動したくないので、「送信済み」または「送信していません」と警告する必要があります。以下は、私のコードdoesntの仕事です。 PHPでajaxを使用してフォームを送信し、結果を返す

echo"<form id=\"form\" name=\"form\" method=\"post\" onsubmit=\"send(reply)\">"; 

のjavascript:

function send(reply) 
{ 
    var httpRequest; 
    make_request() 
    function stateck() 
     { 
     if(httpxml.readyState==4) 

     { 

     alert (httpxml.responseText); 

     } 

    httpxml.onreadystatechange=stateck; 
    reply_url="compose.php?reply=" + reply.value + "&msgid="<?php echo $msgid; ?> + "&to="<?php echo $to; ?> + "&subject="<?php echo $subject; ?>"; 
    httpxml.open("GET",reply_url,true); 
    httpxml.send(null); 
    } 
} 

このデータは、データベースからアクセスする必要があるように私は、PHP PHPの変数を使用しています。

ありがとうございました

答えて

2

は、あなたは、ハンドラを提出あなたの上にfalseを返すことで、イベントを自分で取り扱わブラウザに指示する必要があります:原因となる、エラーを発生させるために起こっているよう

echo"<form id=\"form\" name=\"form\" method=\"post\" onsubmit=\"send(reply); return false;\">"; 

また、あなたの送信機能に見えますブラウザに送信します。あなたはどこにでもhttpxmlを割り当てません。私はあなたが本当に欲しいと思います:

function send(reply) { 
    var httpxml; 
    httpxml = make_request(); 
    stateck = function() { 
     if(httpxml.readyState==4){ 
      alert (httpxml.status);// you will want to check the server response code too 
      alert (httpxml.responseText);  
     } 

    }; 

    httpxml.onreadystatechange=stateck; 
    reply_url="compose.php?reply=" + reply.value + "&msgid="<?php echo $msgid; ?> + "&to="<?php echo $to; ?> + "&subject="<?php echo $subject; ?>"; 
    httpxml.open("GET",reply_url,true); 
    httpxml.send(null); 
} 
+0

私は手動でアドレスバーにreply_urlを入力しても、私が提出するとうまくいけない場合、これがうまくいきました。 – Elliott

+0

返信の値は何ですか?定義されていないように見えます。 – lambacck

+0

私は返信を受け取りません は "送信"する必要があります – Elliott

2

フォーム提出が発生したため、別のページに移動しました。あなたはすべて二重引用符をエスケープする必要がないように、エコー「...」:あなたはところで

onsubmit="send(reply); return false;" 

を使用し、フォームは場所を取るために提出したくない場合は、単一引用符を使用することができます文字列に

+0

おかげ を参照してくださいが、私は、フォームを送信するためにする必要があり...とcompose.phpあなたはAJAXを使用することができます – Elliott

+0

を送ったものを返しますcompose.phpからコンテンツを取得することはできますが、別のページに進む(または現在のページをリフレッシュする)フォームの送信が発生しないようにする必要があります。 –

0

JavaScriptlibraryを使用することをおすすめします。それが既に存在するときに車輪を再発明するのはなぜですか?

例:

0

あなたはAjaxを介して、何かを返したい場合は通常ページの提出を避けたいです。ただし、フォームを送信しているように感じさせたい場合は、Ajaxの送信ボタンとして機能する通常のボタン(送信ボタンではない)をページに配置します。あなたのAjaxの更新機能をonclickに結びつけて、あなたが応答に必要な結果を送るようにリクエストするPHPページを持ってください。他のすべてのもの(結果テキストをフィールドにポップするなど)は、標準的なAjaxとJavaScriptでなければなりません。

関連する問題