2012-06-23 2 views
1

Я пытаюсь выполнить основной вызов AJAX, где я отправляю адрес «www.google.com» на номер urlpost.php, но текущий код, похоже, не может обнаружить ответ (ничего бывает). Я попытался найти ошибку, но не знаю, где я ошибся.Базовый запрос AJAX Javascript/PHP не работает

Спасибо вам заранее!

Отказ от ответственности: Это изменение примера от Робина Никсона Learning PHP, MySQL & Javascript

index.html

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Ajax Example</title> 
    </head> 
    <body> 

    <h1 align='center'>Loading a web page into a DIV</h1> 
    <div id='info' align='center'>This Sentence will be replaced </div> 
    <script> 
     request = new ajaxRequest() 
     request.open("POST", "urlpost.php", true) //also tried 'test/urlpost.php' (test is the folder of the file) 
     request.setRequestHeader("Content-type", "application/x-www-form-urlencoded") 
     request.setRequestHeader("Content-length", params.length) 
     request.setRequestHeader("Connection", "close")     

     request.send("url=www.google.com") 

     request.onreadystatechange = ajaxCallback 

     function ajaxCallback() 
     { 
      alert("Reponse received") //just letting me know I got a reponse 
      if(this.readyState==4) //ready 
      { 
       if (this.status==200) //no idea 
        { 
         if (this.responseText != null) 
          { 
           document.getElementById('info').innerHTML = this.responseText 
          } 
         else alert("AJAX ERROR: NO DATA RECEIVED") 
        } 
        else alert("Ajax error: "+this.statusText); 
      } 
     } 

     function ajaxRequest() 
     { 
      try //non IE browser 
      { 
       var request = new XMLHttpRequest(); 
      } 
      catch(e1) 
      { 
       try // IE6+? 
       { 
        request = new ActiveXObject("Msxml2.XMLHTTP") 
       } 
       catch(e2) 
       { 
        try // IE5? 
        { 
         request = new ActiveXObject("Microsoft.XMLHTTP")     
        } 
        catch(e3) //No Ajax support 
        { 
         request = false 
        } 
       } 
      } 
      return request 
     } 

    </script> 

urlpost.php

<?php 
if (isset($_POST['url'])){ 
    echo file_get_contents("http://".$_POST['url']); 
} 

?> 
+0

Чтобы отладить ваш пример, вы должны попробовать [Firebug] (http://getfirebug.com/) или встроенный отладчик, если вы используете браузер веб-кита. Вы увидите, был ли отправлен запрос или нет, и может поставить контрольные точки. –

+1

Кроме того, для упрощения отладки используйте более простой код в файле urlpost.php, например ''. Позже вы будете иметь дело с переменной POST. –

+9

Поддержка IE5? ... У меня нет слов! – Matt

ответ

1

request.setRequestHeader("Content-length", params.length)

params.length не определен. Вам необходимо заменить это на длину данных, которые вы отправляете.

request.send("url=www.google.com") в вашем случае это 18 символов.

+0

Это идеальная работа. –

1

Используйте jQuery, чтобы переписать его, намного проще.

$(document).ready(function(){ 

     $.ajax({ 
      type: "post", 
      url: "urlpost.php", 
      data: "url=www.google.com", 

      success: function(msg){ 
       $('#replace').html(msg); 

      } 
     }); 
    return false; 

});​ 
Смежные вопросы