2016-12-22 21 views
3

AJAXを使用してCFCを呼び出していますが、実行したクエリから2つの変数を送信しようとしています。ここでAJAXを使用して複数の引数を持つCFCを呼び出す

$.ajax({ 
    type:"POST", 
    url:"cfcs/get_equipment_details.cfc?method=getDetails", 
    dataType: 'json', 
    data: { equipment_name: "#equipment_name#", customer_name: "#customer_name#"}, 
    cache:false, 
    success: function(response) { 
     console.log("Customer Name" + customer_name); 

     $.each(response.DATA, function(i, row){ 
      var id = row[0]; 
      var customer_name = row[1]; 
      var equipment_name = row[2]; 
      var date_last_completed = row[3]; 
      var maintenance_interval = row[4]; 
      var last_completed_by = row[5]; 
      var equipment_notes = row[6]; 
      var warranty_end_date = row[7]; 
      var service_Tag = row[8]; 
      var serial_number = row[9]; 
      var backup_notes = row[10]; 
      var TT = row[11]; 
      $("##customer_name#id#").val(customer_name); 
      }); 
    } 
}); 

は私のCFCです:

<cffunction name="getDetails" access="remote" output="false" returntype="query"> 
    <cfargument name="equipment_name" type="any" required="true"> 
    <cfargument name="customer_name" type="any" required="true"> 

    <!--- Get list of all equipment --->  
    <cfquery name="get_equipment" datasource="#datasource#"> 
    select * 
    from equipment_maintenance 
    where equipment_name= <cfqueryparam value="#ARGUMENTS.equipment_name#" cfsqltype="cf_sql_varchar"> 
    AND customer_name= <cfqueryparam value="#ARGUMENTS.customer_name#" cfsqltype="cf_sql_varchar"> 
    </cfquery> 

    <cfreturn get_equipment> 

しかし、私のCFCはエラーを投げている:私のAJAXは、このようになります

The parameter customer_name to function getDetails is required but was not passed in.

にはどうすれば成功し、これら2つの引数に渡すことができますし、クエリ結果を返しますか?

+2

ネットワーク]タブのショーなどを何渡されますか? –

+3

私はそれがタイプミスかどうか分かりませんが、あなたは 'customer_name'の終了引用符がありません。 – Chester

+1

あなたのcfcの 'cfreturn'タグは面倒です。 –

答えて

4

Ajax関数のデータ属性にcustomer_nameの閉じる"がありません。 あなたのAjax機能は、今すぐあなたのCFC関数といくつかの問題があり、この

$.ajax({ 
type:"POST", 
url:"cfcs/get_equipment_details.cfc?method=getDetails", 
data: { equipment_name: "#equipment_name#", customer_name: "#customer_name#"}, 
     cache:false, 
     success: function(msg) { 
     $("##customer_name#id#").val(msg); 
    } 
}); 

ようになるはずです。存在しない変数と関数名と同じ変数を返しています。あなたはこのような何かをした場合、あなたは、AJAX応答その後、アヤックスの成功にJSONを解析し、さらにそれを処理するよう、全クエリオブジェクトは、リターンになりたい場合は、

<cffunction name="getDetails" access="remote" output="false" returnformat="JSON"> 
    <cfargument name="equipment_name" type="any" required="true"> 
    <cfargument name="customer_name" type="any" required="true"> 

    <!--- Get list of all equipment --->  
    <cfquery name="get_equipment" datasource="#datasource#"> 
    select * 
    from equipment_maintenance 
    where equipment_name= <cfqueryparam value="#ARGUMENTS.equipment_name#" cfsqltype="cf_sql_varchar"> 
    AND customer_name= <cfqueryparam value="#ARGUMENTS.customer_name#" cfsqltype="cf_sql_varchar"> 
    </cfquery> 

    <cfreturn get_equipment.customer_Name> 
</cffunction> 

に動作します

+0

さて、タグが今、より意味をなさない方法を見ています。しかし、成功関数の変数 'msg'にはどのような情報が入っていますか?それはちょうどタグで送信されているデータですか? また、私のCFCはこのエラーをスローしています。文字列[All About Care]を[JSON]型の値にキャストできません - All About Careは、クエリによって返される 'customer_name'フィールドの値です。 –

+1

クエリオブジェクト全体を返す場合、CFはクエリをJSONに変換して返します。成功したmsgには、解析する必要のあるJSON文字列、またはデータ型を設定できるJSON文字列が含まれます: "JSON"この場合、自動的に解析されます。 1つのcustomer_nameフォーム・クエリー・オブジェクトを戻す場合、successのmsgにはcustomer_nameが含まれており、解析する必要はありません。 –

+0

さて、元の投稿をあなたの提案で更新しました。私は今、私のコンソールで何のエラーも受けていませんが、私は[object Object]をHTML入力フィールドに表示しています。なぜなら、私はまだそのデータを解析する必要があるからですか?私はこれを設定して、複数の列のデータでクエリ全体を返したいのでJSONを解析する必要があると思います。 –

関連する問題