2014-02-25 573 views
0

我試圖發送一個AJAX請求,並想看看我發送了什麼。 但不幸的是我無法做到這一點。 存在一個select選項元素,如果一切正常,我將在稍後填入響應。AJAX請求 - 如何查看請求?

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('select[name="domains"]').change(function(){ 
     var requestStr = $(this).val(); 

     // send Ajax request 
     $.ajax({ 
     cache: 'false', 
     type: 'POST', 
     data: {select:requestStr}, 
     url: 'myHandler.php', 
     dataType: 'json', 
     success: function(data){ 
    var json = JSON.parse(data);      
      alert(json.response); // Here you get the value 

    if(data.status == 'success') 
     alert("Thank you for subscribing!"); 
    else if(data.status == 'error') 
     alert("Error on query!"); 

      var str = "<option value=''>Please Select</option>"; 

      //$.each(data, function(i, items){ 
      // str += "<option value='"+items.id+"'>"+items.name+"</options"; 
      //}); 

      $('select[name="countries"]').html(str); 
     }, 
     // When an error occurs, the error function is called. 
    error:function(x,e){ 
      if(x.status==0){ 
       alert('You are offline!!\n Please Check Your Network.'); 
      }else if(x.status==404){ 
       alert('Requested URL not found.'); 
      }else if(x.status==500){ 
       alert('Internel Server Error.'); 
      }else if(e=='parsererror'){ 
       alert('Error.\nParsing JSON Request failed.'); 
      }else if(e=='timeout'){ 
       alert('Request Time out.'); 
      }else { 
       alert('Unknow Error.\n'+x.responseText); 
      } 
     }      
     }); 
    }); 
}); 

PHP的處理程序是這樣的:

<?php 

require_once 'myClass.php'; 

if (isset($_POST['select'])) 
{ 
    // log event 
$filename = "log.txt"; 
$fd = fopen($filename, "a"); 
$str = "[" . date("Y/m/d h:i:s", mktime()) . "] " . $_POST['select']; 
fwrite($fd, $str . "\n"); 
    fclose($fd); 

    $handler = new myClass(); 
    $dataAjax = $handler->getName($_POST['select']); 
    echo json_encode($dataAjax); 
} 

<?php 
class myClass { 

    function getName($data) 
    { 
     return $data; 
    } 
} 

我以爲我可以使用請求參數和返回,但沒有什麼我可以看到。 哦,我使用Internet Explorer,因此我無法使用Firebug。

編輯 我添加了幾行記錄我的請求。 但是日誌文件是空的。

UPDATE 現在有一些進展:

我可以在請求文本 「選擇= QD」 看到這一點。 但是,當我與echo json_encode($dataAjax); 呼應它,我得到一個錯誤窗口Error.Parsing JSON Request failed.

爲什麼「成功」功能將不能工作,我不明白這一點! 響應是json編碼。

哦順便說一句。是否正確,我不能在PHP中使用「返回」來將我的回覆發送回AJAX?

+1

IE瀏覽器的開發者工具 - F12或F10,我相信(應(開發工具) - 從那裏,查看您的網絡選項卡 – tymeJV

+1

Firebug(Firefox)<=我的最愛,開發人員工具(Chrome) – Dexa

+0

即使您使用Internet Explorer多少,它至少可以調試這與螢火蟲o r鉻控制檯足以讓ajax請求工作。 – Rooster

回答

0

您可以在服務器端打印出請求並將其記錄到文件/ syslog/etc中。

+0

好吧,我試圖記錄它,但沒有條目。 我想我不能用我的構造調用類中的函數。 – Tipo

+0

嘗試調試,例如嘗試記錄更高級別的其他內容。然後,$ data就在這個數組中,所以你可以這樣試試: $ str =「[」。日期(「Y/m/d h:i:s」,mktime())。 「]」。 print_r($ data,true); –

+0

謝謝安德烈斯奧拉夫。我更新了主題和代碼。但無論如何,'成功'功能不會只回應'錯誤'功能。 我用JSON編碼了我的回覆,但AJAX說這是錯誤的。 – Tipo

0

,如果你只是想看到的headers,post,response,html然後嘗試firebug

function IsJson(str) { 
    try { 
    JSON.parse(str); 
    } catch (e) { 
     return false; 
    } 
    return true; 
} 

這將檢查響應是否是JSON或不

+0

作爲評論頂部,我只有Internet Explorer。我知道,不好。但這是堅定的政策。 – Tipo

+0

然後嘗試f12,這會告訴你我所有的ajax請求 –

+0

。我更新了我的主題和一些我的代碼。現在它幾乎奏效。但'成功'功能不會只回應'錯誤'功能 – Tipo

0
if (isset($_POST['countries'])) 
{ 
    $handler = new myClass(); 
    $dataAjax = $handler->getName($_POST['countries']); 
    echo json_encode($dataAjax); 
} 

------------------------------------------------------ 

dataType: 'json' 
+0

好吧,現在我得到一個迴應。或者,我可以在響應文本中看到我的HTML,並在最後看到「QL」附加到我的HTML結尾。 太棒了!但爲什麼我的「成功」功能不起作用? AJAX中的「錯誤」功能將返回一個「警報」,但沒有警報窗口。如果是成功的話,我的第二個選擇框應該改變ist值,至少是第一個值。 不理解這種行爲。 :-( – Tipo