2016-12-22 10 views
3

AJAX를 사용하여 CFC를 호출하고 실행 한 쿼리에서 두 개의 변수를 보내려고합니다. 여기 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 오류 던지고있다 :

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

나는 성공적으로 두 인수를 전달할 수있는 방법

과 내 쿼리 결과를 반환합니까?

+2

네트워크 탭 쇼 등을 무엇 통과 되니? –

+3

오타가 맞는지 모르겠지만'customer_name'에 대한 끝 인용문이 누락되었습니다. – Chester

+1

cfc에서'cfreturn' 태그가 번거롭 게 보입니다. –

답변

4

Ajax 기능의 데이터 속성에서 customer_name에 대해 "을 마감 처리하지 않았습니다. 귀하의 아약스 기능이

$.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); 
    } 
}); 

처럼 보일 것이다 이제 CFC 기능 몇 가지 문제가 있습니다. 존재하지 않는 변수와 함수 이름과 같은 변수를 리턴합니다. 이 같은 일을 할 경우 당신은 당신이 아약스 응답 후 아약스의 성공을 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에서 이제이 오류가 발생합니다. String [All About Care]을 [JSON] 유형의 값으로 캐스팅 할 수 없습니다. All About Care는 쿼리에서 반환 한 'customer_name'필드의 값입니다. –

+1

전체 쿼리 개체를 반환하는 경우 CF는 쿼리를 JSON으로 변환 한 다음 다시 보냅니다. 따라서 성공한 msg에는 구문 분석해야하거나 데이터 형식을 설정할 수있는 JSON 문자열이 포함됩니다. "JSON"을 아약스로 가져옵니다 이 경우 함수는 자동으로 구문 분석됩니다. 하나의 customer_name 양식 조회 오브젝트 만 리턴하는 경우 성공한 msg는 customer_name을 포함하며이를 구문 분석 할 필요가 없습니다. –

+0

좋아, 원래 게시물을 제안과 함께 업데이트했습니다. 내 콘솔에 어떤 오류도 나타나지 않지만 HTML 입력 필드에 [object Object]가 표시됩니다. 그 데이터를 파싱해야하기 때문입니까? 필자는 JSON을 구문 분석 할 수 있도록이 설정을해야한다고 생각합니다. 둘 이상의 데이터 열로 전체 쿼리를 반환하기를 원하기 때문입니다. –