1

jQuery AjaxWebmethod が文字列のコレクションを返す次のシナリオがあります。

  1. コレクションは null にすることができます
  2. コレクションは、null 以外のゼロ レコードにすることができます。
  3. コレクションには 1 つ以上のレコードがあります

次のコードは正常に動作します。jQuery.isEmptyObjectを使用します。isEmptyObject()以外の場合は使用しないことをお勧めしますPlain Object

isEmptyObject() を使用せずに結果を処理するにはどうすればよいでしょうか?

注: ajax の「結果」は「平凡ではない」ものです。

参照:

  1. オブジェクトは空ですか?
  2. Javascript の hasOwnProperty() メソッドは IN 演算子よりも一貫性があります

コード

//Callback Function
function displayResultForLog(result) 
{


if (result.hasOwnProperty("d")) 
{
    result = result.d
}


if ($.isPlainObject(result)) {
    alert('plain object');
}
else 
{
    alert('not plain');
}

if($.isEmptyObject(result))
{
    //Method returned null        
    $(requiredTable).append('No data found for the search criteria.');
}
else
{

    if (result.hasOwnProperty('length')) 
    {

        //Set the values in HTML
        for (i = 0; i < result.length; i++) 
        {
            var sentDate = result[i];
        }
    }

    else 
    {
      //Method returned non-null object; but there is no rows in that        
      $(requiredTable).append('No data found for the search criteria.');
    }

  }

 }

function setReportTable(receivedContext) {

var searchInput = '111';
$.ajax(
        {
            type: "POST",
            url: "ReportList.aspx/GetReportsSentWithinDates",
            data: '{"searchInput": "' + searchInput + '"}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            context: receivedContext, //CONTEXT
            success: displayResultForLog

        }
        );
 }
4

2 に答える 2

0

それ以外の

if($.isEmptyObject(result))

だろう

if(typeof result !== 'undefined' && result.length < 1)

仕事?

undefinedのリファレンスはここにありますJavaScriptundefinedプロパティ

undefinedプロパティは、変数に値が割り当てられていないことを示します。

于 2012-12-03T12:44:18.870 に答える
0

現在、私は以下を使用しています。改善の提案はありますか?

 function displayResultForLog(result) 
 {
   if (result.hasOwnProperty("d")) {
       result = result.d
   }

if (result !== undefined && result != null )
{
    if (result.hasOwnProperty('length')) 
    {
        if (result.length >= 1) 
        {
            for (i = 0; i < result.length; i++) {

                var sentDate = result[i];

            }
        }
        else 
        {
            $(requiredTable).append('Length is 0');
        }
    }

    else 
    {
        $(requiredTable).append('Length is not available.');
    }

}
else 
{
    $(requiredTable).append('Result is null.');
}
}

undefined のリファレンスはこちらJavaScript undefined プロパティ

undefined プロパティは、変数に値が割り当てられていないことを示します。

于 2012-12-03T13:32:15.760 に答える