2016-05-25 10 views
0

どこでも検索しましたが、この問題の答えを見つけることができません。PHPでajax投稿要求にアクセスできない

少しのajaxスクリプトを書いていますが、POSTリクエストの正しい値を取得できません。 これは、これまでのコードです:

<textarea id="message" name="message" style="width:100%;"></textarea> 
<input value="SEND" style="border-radius: 5px 5px 5px 5px;" type = 'button' onclick = 'ajaxFunction()'/> 



<script type="text/javascript">        <!-- 
      //Browser Support Code 
      function ajaxFunction(){ 
       var ajaxRequest; // The variable that makes Ajax possible! 

       try { 
        // Opera 8.0+, Firefox, Safari 
        ajaxRequest = new XMLHttpRequest(); 
       }catch (e) { 
        // Internet Explorer Browsers 
        try { 
        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
        }catch (e) { 
        try{ 
         ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
        }catch (e){ 
         // Something went wrong 
         alert("Your browser broke!"); 
         return false; 
        } 
        } 
       } 

       // Create a function that will receive data 
       // sent from the server and will update 
       // div section in the same page. 

       ajaxRequest.onreadystatechange = function(){ 
        if(ajaxRequest.readyState == 4){ 
        var ajaxDisplay = document.getElementById('chbox'); 
        ajaxDisplay.innerHTML = ajaxRequest.responseText; 
        } 
       } 

       // Now get the value from user and pass it to 
       // server script. 

       var message = document.getElementById('message').value; 
       var queryString = message ; 
       ajaxRequest.open("POST", 'chatdata.php', true); 
       //ajaxRequest.send(null); 
       ajaxRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
       ajaxRequest.send('queryString'); 
      } 
</script> 



<?php 
$message1 = $_REQUEST['message']; 
echo $message; 
?> 

私はこれは私が配列([のqueryString] =>)得るものですPOST値 の内容を確認するためにprint_r($message);を使用しています。値はありません。 私のコードで何が間違っている可能性がありますか? (私はjQueryのを使用しているだろうが、私はよく、まだそれに接地していないよ)

+0

を。 [この回答](http://stackoverflow.com/a/9713078)を参照してください。 –

+1

たぶん 'var queryString =" queryString = "+ message;'?ポストデータは、 'key1 = value1&key2 = value2&key3 = value3&...'のような一連の 'key = value'ペアであることに注意してください。 –

+0

イベントを定義するのではなく、XMLHttpRequestオブジェクトを使用するイベントハンドラを定義すると有益ですXMLHttpRequestオブジェクトを直接インスタンス化するハンドラです。 –

答えて

0

私はいくつかのバグを修正し、コードのスタートが動作します:あなたは、パラメータ名を設定する必要が

1.

<p id="chbox"></p> <!-- ajaxDisplay need this --> 

2.

ajaxRequest.send("message="+queryString); //queryString is variable so without quotes 

3.

var_dump($message1); //there was message without 1 
+0

それは今良いです。あなたが今書いているものの代わりに 'ajaxRequest.send( 'queryString')'を書く前に。 Javascriptは 'queryString'を変数ではなく文字列として解釈します。今度は 'ajaxRequest 'を入れます。send( "message =" + queryString); '、queryStringはここでの文字列ではなく変数です –

0

は、ここでは、jQueryの中でそれを行うだろうかだ - 非常に簡単:

$('#mybutt').click(function(){ 
 
\t var txt = $('#message').val(); 
 
\t $.ajax({ 
 
\t \t type: 'post', 
 
\t \t url: 'my_ajax_processor_file.php', 
 
\t \t data: 'ta=' + txt, 
 
\t \t success: function(d){ 
 
\t \t \t if (d.length) alert(d); 
 
\t \t } 
 
\t }); 
 

 
}); //END mybutt.click
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<textarea id="message" name="message" style="width:100%;"></textarea> 
 
<input id="mybutt" value="SEND" style="border-radius: 5px 5px 5px 5px;" type='button' />

my_ajax_processor_file

<?php 
    $txt = $_POST['ta']; 
    $out = 'You sent: ' .$txt; 
    echo $out; 

の.php

Here are a bunch of free 5-min video tuts for jQuery

+0

常に誰かがJQueryを実行しています。 –

+0

2006年8月26日はインターネットの3番目の誕生日、2番目は同年1月(ファイヤーバグ)でした。 – skobaljic

+0

@AnthonyRutledge私はあなたが質問を読んでいないと思います。 OPはjQueryでこれを行うことを好むとコメントしましたが、どのようにして分かりませんでした。あなたの親切なコメントを読んで、ニース。 – gibberish

0

問題はクエリ文字列にあります。 ajaxRequest.send('queryString');の代わりにajaxRequest.send(queryString)を入力してください。クエリ文字列を使用しないでください。変数の名前を使用してください。それは動作するはずです!

+0

彼はそのような変数を全く持っていません。 – skobaljic

+0

はい、コード内に 'var queryString = message;'があります –

+0

本当に、ごめんなさい、まったく見たことがありません。 – skobaljic

関連する問題