2013-07-09 30 views
0

我想從使用Ajax調用服務器的文本值(「選擇箱」)。 Ajax調用是:Ajax調用總是在錯誤處理程序結束

var selected_crate =''; 

$.ajax({ 
    url: OC.linkTo('crate_it', 'ajax/bagit_handler.php')+'?action=get_crate', 
    type: 'get', 
    dataType: 'text/html', 
    success: function(data){ 
     selected_crate = data.responseText; 
     $('#crates option').filter(function(){ 
      return $(this).attr("id") == selected_crate; 
     }).prop('selected', true); 
    }, 
    error: function(data){ 
     var e = data.responseText; 
     alert(e); 
    } 
}); 

而服務器端代碼片段是:

case 'get_crate': 
    $msg = $bagit_manager->getSelectedCrate(); 
    print $msg; 
    break; 

我想要做成功後的東西,但這個電話始終處於錯誤處理程序結束。如果有完整的處理程序,它將進入該處理程序。但我想用成功和錯誤處理程序,因爲我想

  1. 發送錯誤響應,如果事情是從服務器端
  2. 做成功的東西在客戶端

我錯了努力實現這一點。爲什麼這個調用總是以錯誤處理程序結束,我怎麼才能真正發送一個關於這個調用的錯誤響應,如果發生任何錯誤,最終會以錯誤處理程序結束,否則成功響應?

+1

有什麼響應的狀態碼? –

+0

狀態爲200和狀態文字是「OK」 – lloydh

+0

你有沒有試圖消除'dataType'選項?無論如何,「text/html」並不是一個有效的值。 –

回答

0

看看在錯誤處理程序的數據被檢索或不如果數據被正確檢索這意味着你的數據類型是不適合的Ajax調用響應匹配[看到它必須在將返回一些額外的價值您的服務器代碼情況下]

+0

正在檢索數據,因此我猜這是數據類型不匹配。如何找出數據類型是什麼?無論如何,從服務器端,如你所見,我打印一條短信。不知道php在後臺做什麼。 – lloydh

0

網址:OC.linkTo( 'crate_it', 'AJAX/bagit_handler.php')+ '?行動= get_crate',

代替這個嘗試直接URL等

網址: www.yoursite.com/ajax/bagit_handler.php?action=get_crate

我認爲這會幫助你獲得成功。