2016-05-25 3 views
0

Я искал везде, но не могу найти ответ на эту проблему.Не удается выполнить запрос на отправку ajax в php

Я пишу небольшой скрипт 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; 
?> 

, когда я использую print_r($message); видеть содержимое значения POST это то, что я получаю Array ([QueryString] =>). Он не имеет значений. Что может быть неправильным с моим кодом? (. Я бы использовал JQuery но я не очень хорошо заземлен в нем пока)

+0

Вы должны установить имя параметра , См. [Этот ответ] (http://stackoverflow.com/a/9713078). –

+1

Может быть, 'var queryString =" queryString = "+ message;'? Помните, что post-данные представляют собой серию пар 'key = value', таких как: key1 = value1 & key2 = value2 & key3 = value3 & ...' –

+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

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

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

+0

Всегда кто-то работает в JQuery. –

+0

26 августа 2006 года третий день рождения в Интернете, второй - в январе того же года (Firebug). – skobaljic

+0

@ AnthonyRutledge Я думаю, вы не прочитали вопрос. OP прокомментировал, что он предпочел бы сделать это в jQuery, но не знал, как это сделать. Приятно читать ваши добрые комментарии. – gibberish

0

Проблема связана с строкой запроса. Вы должны положить ajaxRequest.send(queryString) вместо ajaxRequest.send('queryString');. Не используйте строку запроса, просто используйте имя переменной. Он должен работать!

+0

У него вообще нет такой переменной. – skobaljic

+0

Да, есть в 'var queryString = message;' в коде –

+0

Действительно, извините, не видел его вообще. – skobaljic

Смежные вопросы