2014-05-01 22 views
0

我正在使用'beforeSend'來調用將驗證選擇框選項是否大於零的函數。如果是這樣,它返回true,否則返回false。到現在爲止還挺好。對象不支持屬性或方法「完成」

我遇到的問題是,當它返回false時,我在JavaScript調試屏幕中看到「對象不支持屬性或方法」。否則,一切都很好。

function validateForm() 
{ 
    if($('#p_employee').val() == 0) 
    { 
     $('#errorMessage').text(' *** Please select an employee. ***'); 
     return false; 
    } 
    else 
    { 
     return true;   
    } 
} 

function populateEmployeeDiv() 
{ 
    $.ajax 
    ({ 
     type:   "post", 
     url:   "populateEmployeeDiv.cfm", 
     cache:   false, 
     dataType:  "html", 
     target:   'employeeDiv', 
     data:   { 
          p_employee: $('#p_employee').val() 
         }, 
     beforeSend:  function() { 
             return validateForm(); 
            } 
    }) 
    .done(function(content){ 

     $('#employeeDiv').html(content); 

    }) 
} 
+0

請花些時間使用編輯器預覽清理代碼。 [有學習使用降價的幫助頁面](http://stackoverflow.com/editing-help)。 – zzzzBov

+0

我錯過了什麼嗎?代碼看起來比較乾淨 –

+2

「在'beforeSend'函數中返回'false'將取消請求。」所以''.ajax'可能返回'null',它沒有'.done()'方法。嘗試在您的'.ajax'選項中使用'success:'來代替。 –

回答

2

這是一個陌生的地方,以驗證表單?爲什麼不先驗證它,然後在有效的情況下進行ajax調用?

function populateEmployeeDiv() { 

    if (validateForm()) { 
     $.ajax({ 
      type  : "post", 
      url  : "populateEmployeeDiv.cfm", 
      cache : false, 
      dataType : "html", 
      target : 'employeeDiv', 
      data  : { p_employee: $('#p_employee').val() } 
     }).done(function(content){ 
      $('#employeeDiv').html(content); 
     }); 
    } 
} 
+0

在AJAX調用之前驗證需求通常是我如何做的。看起來beforeSend有助於清理或簡化代碼。 – Ann

+0

成功了。謝謝! – Ann

相關問題