2016-07-07 22 views
-1

У меня проблема с моим вызовом ajax, но я не вижу его. Во-первых, в моем переднем файле у меня есть JavaScript:Javascript ajax call не имеет ответа php

someButton.addEventListener('click', function(){ makeRequest('arg') }); 
function makeRequest(params){ 

     var http_request = false, 
      url = 'actions.php'+'?state='+params; 

     if (window.XMLHttpRequest){ 
      http_request = new XMLHttpRequest(); 
      if (http_request.overrideMimeType) { 
       http_request.overrideMimeType('text/xml'); 
      } 
      }else if(window.ActiveXObject){ 
      try{ 
       http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
      }catch(e){ 
       try{ 
        http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
       }catch(e){} 
      } 
     } 

     if (!http_request) { 
      console.log('Fail :(problem1'); 
      return false; 
     } 

     http_request.onreadystatechange = alertContents; 
     http_request.open('GET', url, true); 
     http_request.send(null); 


     function alertContents(){ 

      if (http_request.readyState == 4) { 
       if (http_request.status == 200) { 

        console.log(http_request.responseText); 
        console.log(http_request.responseXML); 

       } else { 
        console.log('problem2.'); 
       } 
      } 
     } 
    } 

И в action.php я есть:

<?php return 'bla'; ?> 

Код JavaScript Ajax вызова является commond код все могут видеть, поиск в Интернете и PHP самый легкий, который я могу доказать. Но это не сработало. В консоли у меня нет ответа и появляется что-то вроде «элемент не найден».

если я выполнить Аякса с:

console.log(http_request); 

это возвращение:

XMLHttpRequest { onreadystatechange: alertContents(), readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, responseURL: "http://localhost/ordertask/task_act…", status: 200, statusText: "OK", responseType: "", response: "" } 
+0

Хорошо, ответ был прост и отлично работает с «эхом» или «печатью», я не знаю, почему я фокусируюсь на «возврате». Спасибо за ответы – Muribury

ответ

0

Изменить Вы action.php к

<?php echo'bla'; ?> 

Посмотрите документацию: http://php.net/manual/en/function.return.php. Надеюсь, это поможет ... Это должно сработать.

+1

Также, чтобы быть в безопасности, удалите '?>' С конца. Это лучшая практика. Это не позволяет вам иметь персональные символы хвостохранилища. Ow, и, пожалуйста, поставьте пробел между 'echo' и' 'bla'' – aximus

0

Попробуйте этот код

<?php 
    echo'bla'; 
exit; 
?> 
0

Я думаю, что проблема в файле PHP, вместо того, чтобы «вернуть» заявление попробовать операцию печати, например, как «печать („бла“);» или "echo 'bla';". Теперь, когда Ajax обрабатывает возвращаемое сообщение из php, по крайней мере, следует прочитать «bla» и поместить его в console.log().