2012-02-09 17 views
2

私は正常に単一の文字列とcfdumpを返すチュートリアルを完了しました。しかし、私は項目のリストでクエリを返す構文についての助けが必要です。jquery ajax json形式を使用する.cfmページから呼び出し側のhtmlページにどのようにクエリを出力しますか?

また、私の最後の質問のように見えますので、半回答repostと回答しました。

問題:cfcを呼び出す.cfmページからjson形式のjqueryを使用してクエリを出力しようとしています。誰かが私が間違っていることを教えてもらえますか?

私は現在エラーが発生しています。私は私のtest.cfm呼び出しページで

<html> 
<head> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 

    $("#runQuery").click(function() { 

     $.ajax({ 

      type: "GET", 
      url: "./test.cfm", 
      dataType: "json", 
      success: function (resp, textStatus, jqXHR) { 
       buildResultsTable(resp); 
      }, 
      error: function (jqXHR, textStatus, errorThrown) 
      { 
       alert(errorThrown); 
      } 
     }); 

    }); 


    function buildResultsTable(resp) 
    { 
     var tmp_html = $("<tr />"); 
     var j = 0; 

      $("#results").html(""); 

      for (var i = 0; i < resp["COLUMNS"].length; i++) 
      { 
       var tmp_th = $("<th />"); 
       tmp_th.text(resp["COLUMNS"][i]); 
       tmp_html.append(tmp_th); 
      } 
      $("#results").append(tmp_html); 

      for (j = 0; j < resp["DATA"].length; j++) 
      { 
       tmp_html = $("<tr />"); 

       for (var i = 0; i < resp["DATA"][j].length; i++) 
       { 
        var tmp_td = $("<td />"); 
        tmp_td.text(resp["DATA"][j][i]); 
        tmp_html.append(tmp_td); 
       } 
       $("#results").append(tmp_html); 
      } 

    } 

    }) 
    </script> 

</head> 

<body> 
    <input type="button" id="runQuery" value="Show Teams" /> 
    <input type="text" name="name"> 

    <table id="results" cellspacing="0" cellpadding="0"> 
</table> 


</body> 
</html> 

を持っている私の.htmlページで

SyntaxError: JSON.parse: unexpected character. 

私は

<cfinvoke 
    component="learncf_jquery" 
    method="getAllTeams" 
    returnVariable="getItems"> 
    </cfinvoke> 

    <cfoutput>#SerializeJSON(getItems)#</cfoutput> 

test.cfm出力が

{"COLUMNS":["TEAM"],"DATA":[["Dallas Cowboys"],["NY Giants"],["Philadelphia Eagles"],["Washington Redskins"]]} 

のように見えていlearncf_jquery.cfc(別のチュートリアルのコード)

<cfcomponent name="jQueryExample" output="false"> 

<cffunction name="getAllPlayers" output="false" access="private" returntype="query"> 
    <cfset var qAllPlayers = queryNew('playerName, team') /> 

    <cfset queryAddRow(qAllPlayers, 40) /> 

    <!--- add 10 Giants players to the "database" ---> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Alford, Jay', 1) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 1) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Barden, Ramses', 2) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 2) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Beckum, Travis', 3) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 3) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Bernard, Rocky', 4) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 4) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Blackburn, Chase', 5) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 5) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Boss, Kevin', 6) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 6) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Bradshaw, Ahmad', 7) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 7) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Canty, Chris', 8) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 8) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Diehl, David', 9) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 9) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Feagles, Jeff', 10) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 10) /> 

    <!--- add 10 Cowboys players to the "database" ---> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Adams, Flozell', 11) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 11) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Austin, Miles', 12) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 12) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Brown, Courtney', 13) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 13) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Choice, Tashard', 14) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 14) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Colombo, Marc', 15) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 15) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Davis, Leonard', 16) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 16) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Jones, Felix', 17) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 17) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Kitna, Jon', 18) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 18) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Procter, Corey', 19) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 19) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Romo, Tony', 20) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 20) /> 

    <!--- add 10 Eagles players to the "database" ---> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Akers, David', 21) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 21) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Baskett, Hank', 22) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 22) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Booker, Lorenzo', 23) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 23) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Clemons, Chris', 24) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 24) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Demps, Quintin', 25) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 25) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Feeley, A.J.', 26) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 26) /> 

    <cfset querySetCell(qAllPlayers, 'playerName', 'Hobbs, Ellis', 27) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 27) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Jackson, DeSean', 28) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 28) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Klecko, Dan', 29) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 29) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'McNabb, Donovan', 30) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 30) /> 

    <!--- add 10 Redskins players to the "database" ---> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Alexander, Lorenzo', 31) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 31) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Campbell, Jason', 32) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 32) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Clark, Devin', 33) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 33) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Cooley, Chris', 34) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 34) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Dixon, Antonio', 35) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 35) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Fletcher, London', 36) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 36) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Hackett, D.J.', 37) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 37) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Randle El, Antwaan', 38) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 38) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Smoot, Fred', 39) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 39) /> 
    <cfset querySetCell(qAllPlayers, 'playerName', 'Suisham, Shaun', 40) /> 
    <cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 40) /> 

    <cfreturn qAllPlayers /> 
</cffunction> 

<cffunction name="getAllTeams" access="remote" output="false" returntype="query"> 
    <cfset var allPlayers = getAllPlayers() /> 
    <cfset var qGetAllTeams = "" /> 

    <cfquery name="qGetAllTeams" dbtype="query"> 
     SELECT DISTINCT team FROM allPlayers ORDER BY team 
    </cfquery> 

    <cfreturn qGetAllTeams /> 
</cffunction> 

+0

まで正しい – Ravia

+0

@Raviaある答えを投票してください、と言うごめん試合「投票アップは15の評判が必要です」それが – isurfbecause

答えて

1

自分のコードを自分のローカルボックスでテストしましたが、問題なく動作しています。あなたの場合の唯一の問題は、ColdFusionのデバッグ出力を有効にしてjsonフォーマットを妨害する可能性があることです。このコードを追加して、jsonレスポンス(あなたの場合はtest.cfm)を生成するページの一番上にcoldfusionデバッガを無効にしてください。テストして、あなたが見つけたものを教えてください。詳細については、次のURLを参照してください。 http://www.mindfiresolutions.com/While-working-with-AJAX-ColdFusion-Debugging-may-break-your-Ajax-calls-1477.php

そうでない場合は、お使いの応答ページにJSONレスポンスを妨げているいくつかの他の不要な文字列が存在しなければなら

+0

ありがとう、そんなに簡単な答えを見つけるために私に週を取った@ abhisekありがとう! – isurfbecause

0

このコードを追加してみてください:

<cfcontent type="application/json" reset="true"><cfoutput>#SerializeJSON(getItems)#</cfoutput><cfabort> 

これは、要求内容をクリアし、JSONを出力する前に適切なヘッダーを設定し、直後に要求を終了します。

+0

になって...何? –

+0

今すぐ取得しています SyntaxError:JSON.parse:予期しない非空白文字(JSONデータ後) – isurfbecause

+0

hmm .....私が知っている問題を引き起こしてはいけません。 –

関連する問題