2015-05-05 51 views
0

我有一個ajax函數,它從模型中獲取json數據並將其顯示在行中。該函數工作正常,但我想添加一條消息,如果沒有數據返回。我正在嘗試不工作,調試顯示「accts」未定義?使用JavaScript顯示消息是成功:數據ID爲空

任何幫助將是偉大的!

的Javascript:

//Submit form 
$(function submit() { 
    $('form').submit(function (e) { 
      e.preventDefault(); 
      $("#searchResults").show(); 
      $.ajax({ 
       url: 'Home/TAPost', 
       data: $('form').serialize(), 
       dataType: "json", 
       type: 'POST', 
       success: function (accts) { 
        if (accts.success = false) { 
         $("#Error").text('No Accounts were found for the information provided.'); 
        } 
        else { 
         $.each(accts, function (index, acct) { 
          $("#rows").append('<tr><td>' + acct.CustomerName + '</td><td>' + "  " + acct.SSN + '</td><td>' + "  " + acct.FHBOATAcctNumber + '</td><td>' 
           + "  " + acct.OriginalAcctNumber + '</td><td>' + "  " + acct.ProductType + '</td></tr>'); 
         }); 
        } 
       } 
      }); 
      return false; 
    }); 
}); 
+0

你將不得不在執行錯誤回調.. – Rayon

+0

這很自然。如果*沒有返回數據*,那麼'accts' **是** * undefined *(此外,它是一個「成功」回調 - 意味着* something *應該被返回)。如果您想在連接失敗時執行操作,請使用'error'回調 –

+0

@ArturFilipiak - 即使返回數據,它也會顯示錯誤? –

回答

1

你accts對象不包含一個成功的屬性。如果你點擊那行代碼意味着你的請求成功了。您必須測試您是否收到來自服務器的任何數據。

這是你如何能做到這

success: function (accts) { 
      if (!accts || ($.isArray(accts) && accts.lenght === 0) || $.isEmptyObject(accts)) { 
       $("#Error").text('No Accounts were found for the information provided.'); 
      } 

第一次測試,如果你有那麼你accts的值對象,如果你使用的是陣列將數據發送測試它的lenght知道如果它包含的元素和最後,如果您在對象測試中發送數據,如果它具有數據的任何屬性。

{編輯}

你可以發送空數據成功響應網絡。這意味着「您的請求已成功,但我們沒有結果向您顯示」,並且在「您的請求不符合法定形式」或「您無權提出此請求」等不同情況時發生錯誤。

雖然你可以使用這個網頁,但網頁很靈活,但使用錯誤來表示「無結果」被很多糟糕的設計所考慮。失敗的請求通常與它的狀態碼相關聯,並且已經有一個狀態碼來表示沒有數據,204或「無內容」。改爲使用它。

+0

這正是我所需要的!謝謝! –