2009-11-21 6 views
0

Моя страница html отправляет запрос ajax (POST) на PHP, PHP эхо-объект json.PHP возвращает пустую строку json?

Код был протестирован и отлично работал в моем представлении разработки.

Однако после их загрузки на сервер хостинга VPS возвращаемая строка json пуста (я использовал alert() в функции ответа для отображения responseText и обнаружил, что он пуст).

любое представление о проблеме?


Я новичок. Я не понял, как добавить комментарий. (Пожалуйста, дайте мне знать.)

Я изменил код PHP, чтобы вернуть строку, это сработало. поэтому проблема заключается в кодировке json.

новый товар test.php (производства).

if(!isset($_POST['A'])||!isset($_POST['B'])) 
{ 
    echo "Failed"; 
} 
else 
{ 
    echo "OK"; 
} 

HTML:

<html> 
<head> 
<title>Test Page</title> 
<script type="text/javascript"> 

var NORMAL_STATE = 4; 

function ajax_create_http() 
{ 
    var xmlHttp = 0; 
    try 
    { 
     xmlHttp=new XMLHttpRequest(); 
    } 
    catch (e) 
    { 

     try 
     { 
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) 
     { 
      try 
      { 
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e) 
      { 

      return 0; 
     } 
     } 
    } 

    return xmlHttp; 
} 

var http_req_inst = ajax_create_http(); 

function sendHttpRequest(params) 
{ 
    if(!http_req_inst) return; 

    http_req_inst.open('POST', 'test.php', true); 
    http_req_inst.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    http_req_inst.onreadystatechange = handleHttpResponse; 
    http_req_inst.send(params); 

    alert("Request sent"); 
}  

function handleHttpResponse() 
{ 
    if(!http_req_inst) return; 

    if (http_req_inst.readyState == NORMAL_STATE) 
    { 
     alert(http_req_inst.responseText); 

    } 
} 

</script> 

</head> 
<body> 

    <div> 
     <input type="button" value="click" onclick="sendHttpRequest('A=a&B=b')"/> 
    </div> 
</body>  
</html> 

PHP:

<?php 

if(!isset($_POST['A'])||!isset($_POST['B'])) 
{ 
    $rc = 1; 
    $arr = array ('rc'=>(integer)$rc,'msg'=>'Testing failed.'); 
    echo json_encode($arr);  
} 
else 
{ 
    $rc = 0; 
    $arr = array ('rc'=>(integer)$rc,'msg'=>'Testing passed.'); 
    echo json_encode($arr);  
} 

?> 

Когда я тестировал, то responseText пуст.

+0

Попробуйте использовать функцию печати, но какой-то код поможет. – SimonDever

+2

Я бы порекомендовал вам использовать Firebug для отладки вашей функции обратного вызова и проверки деталей запроса Ajax ... – CMS

+0

Сделайте себе одолжение и пользователь FirePHP http://www.firephp.org/ для отладки AJAX – leepowers

ответ

0

Просто проверьте конфигурацию php на обеих машинах. Как на моей машине $ text будет работать на моем провайдере, я должен написать, как $ _GET ['text'] из-за настроек безопасности. Конфигурация PHP даст вам представление о том, что не так, или какие пакеты необходимо установить.

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