2013-03-15 79 views
0

我有一個JavaScript函數執行上一個下拉的變化:我不明白AJAX回調

<script type="text/javascript"> 
     $(function() 
     { 
      // Executes when the status dropdown changes value 
      $('select[name="status_dropdown"]').change(function(event) 
      { 
       var $this = $(event.target); 
       var orderId = $this.closest('tr').children('td:eq(0)').text(); // index 0 refers to the "order_id column" in the table 

       var result = null; 
       var scriptUrl = "ajax_php/update_status.php?order_id=" + orderId + "&status_id=" + this.value; 

       $.ajax(
       { 
        url: scriptUrl, 
        type: 'get', 
        dataType: 'html', 
        async: false, 
        success: function(data) 
        { 
         result = data; 
         alert(result); 
        } 
       }); 
      }); 
     }) 
    </script> 

我試圖讓警報調用顯示下面的PHP代碼的返回值(這是真實的):

<?php 
     . 
     . 
     . 

     return true; 
    ?> 

警報不會彈出。有人知道爲什麼?

+1

檢查您的控制檯是否有錯誤並添加錯誤處理程序 – 2013-03-15 15:26:32

+1

在我看來,您的問題在於您使用的是dataType:html,這意味着您是ajax請求,希望將html數據返回給它。如果返回無效的html(或者不是html的東西),成功函數永遠不會觸發,因爲從技術上講,它不能成功地接收它所期望的內容。 Ajax代表異步的JavaScript和xml(現在更常見的是Json),而且html不是你應該以這種方式來回發送的東西。此外,我只注意到asynch設置爲false ..只要此標誌設置爲false,天使就會死亡。爲什麼要使用ajax呢? – iAmClownShoe 2013-03-15 15:48:53

+0

哦,異步的東西來自另一個帖子,我現在忘記了爲什麼我添加它:\我會刪除,謝謝! 所以你說我必須返回HTML而不是簡單的varialbe?我應該在PHP中回顯HTML? – user2170838 2013-03-15 15:57:30

回答

1

只返回返回PHP腳本中的值 - 將其輸出到阿賈克斯實際上你需要將結果輸出到頁面,在這種情況下,像echo "true";print("true");

+0

好點,但它不能解釋爲什麼沒有警報 – zeroflagL 2013-03-15 15:34:33

+0

我的觀點是ajax通過閱讀頁面的內容獲取數據,而不是php返回的內容 - 因此,您不會向ajax調用輸出任何內容 – 2013-03-15 18:18:00

-1

試試這個

$(document).ready(function(){ 
    $('select[name="status_dropdown"]').change(function(event) 
     { 
      var $this = $(event.target); 
      var orderId = $this.closest('tr').children('td:eq(0)').text(); // index 0 refers to the "order_id column" in the table 

      var result = null; 
      var scriptUrl = "ajax_php/update_status.php?order_id=" + orderId + "&status_id=" + this.value; 

      $.ajax(
      { 
       url: scriptUrl, 
       type: 'get', 
       dataType: 'html', 
       async: false, 
       success: function(data) 
       { 
        result = data; 
        alert(result); 
       } 
      }); 
     }); 
}); 
+0

ummm ...全部你做的是把它包裝在一個文件準備好? – iAmClownShoe 2013-03-15 15:53:41

2

我試過你的代碼與另一個URL,它運作良好。 有三種情況:

  • 在scriptUrl計算不正確,並沒有指向你的PHP腳本
  • 服務器關閉
  • 您正在訪問同一個域下沒有擔任過一個URL的你的腳本(同源策略)

你可以看到你的錯誤的詳細信息,如果您添加一個錯誤處理程序AJAX參數:

error : function(jqXHR, textStatus, errorThrown) { 
    alert(errorThrown); 
} 
+0

我會嘗試檢查錯誤,謝謝! – user2170838 2013-03-15 15:58:06