-1

サーバーに.cfcがあり、クエリを実行して結果をphonegapアプリに送り返すために使用しています。クエリでデータが返されたかどうかを確認し、「データが見つかりません」などの文字列を結果に返して表示する構文を正しく取得できません。これが私のコードです...

remote array function getintList() {
        var q = new com.adobe.coldfusion.query();
        q.setDatasource("myData");
        q.setSQL("select id1, Date, ShowLInk, IntName, description from myData Where intyear = #dateformat(Now(), "YYYY")# order by date desc");
        var data = q.execute().getResult();
        var result = [];
        for(var i=1; i<= data.recordCount; i++) {
            arrayAppend(result, {"id"=data.id1[i], "name"=data.IntName[i], "date"=dateformat(data.date[i], "mmmm d, yyyy"), "description"=data.description[i], "showlink"=data.ShowLInk[i]});
        }
        return result;
    }

たぶん私はこのようなcfifステートメントを実行できると思いましたが、それは機能しません...

<cfif data.recordcount lt 1>
result = "no data"
return result;
<cfelse>
return result;
</cfif>

誰かが私を助けてくれることを願っています。

4

2 に答える 2

5

まあ結果は配列です。

電話のギャップが原因で、javascript が結果を処理していると思われる場合は、単に結果に javascript の長さを使用します。

すなわち

if(result.length){
    //have data doStuff
}else{
    //noData
}
于 2012-07-02T05:11:20.827 に答える
1

関数は配列を返します。したがって、returnvariable で arraylen() を確認するだけです。例えば:

<!--- invoke your function --->
<cfset intlist = createobject("component","yourcomponentname").getintlist() />

<!--- check for resulsts --->
<cfif arraylen(intlist)>
  do something with your results ...
<cfelse>
  No results ...
</cfif>

編集:ああ、あなたの関数がリモートで呼び出されることを意図していることを知りませんでした。したがって、おそらく ajax 経由で呼び出されます。JavaScript で .length を確認するだけです。

// assumed that "data" holds your JSON result
if(data.length) { 
  // do something with the results
} else {
  // show "no results"-message
}
于 2012-07-02T05:05:31.997 に答える