2014-11-04 17 views
2

form-field1의 입력을 기반으로 form-field2를 채우려고합니다. 다음은 두 가지 양식 입력 필드입니다.AJAX 응답으로 양식 필드 채우기

<input size="50" name="customer_name2" id="customer_name2" tabindex="0" onblur="checkFilled()" type="text" list="customers" /> 

<cftextarea name="customer_address" cols="50" rows="5" id="customer_address2" tabindex="0" onFocus="populateAddressField()"></cftextarea> 

첫 번째 양식 필드는 다음과 같은 자바 스크립트에 의해 채워지며 그 부분은 작동합니다

<script> 
$(document).ready(function() { 
     $("##customer_name2").autocomplete({ 
       source: "cfcs/past_customers.cfc?method=lookupCustomers&returnformat=json", 
       minLength: 1, 
       select: function(event, ui) { 
        $('##customer_name2').val(ui.item.value); 
       } 
      }); 
}); 
</script> 

내가 다음 쿼리를 실행 AJAX를 통해 CFC에 첫 번째 양식 필드의 값을 전달하고 웁니다 결과와 함께 두 번째 양식 필드. 여기

<script> 
function populateAddressField(){     
      $.ajax({ 
      dataType: 'json', 
      data: { 
         customer_name2: $('##customer_name2').val() 
        }, 
      url: "cfcs/past_customers.cfc?method=getAddress&returnformat=json", 
      beforeSend: function(){ 
       $('.loader').show(); 
      }, 
      complete: function(){ 
       $('.loader').hide(3000); 
      }, 
      success: function() { 
       $("##customer_address2").val(response); 
      }  
     }); 
} 
</script> 

내 CFC입니다 :

<cffunction name="lookupCustomers" access="remote" output="no" hint="I return a list of customers" returnformat="JSON"> 
<cfargument name="term" required="false" default="" /> 

<!--- Define variables ---> 
<cfset var returnArray =ArrayNew(1)> 

<!--- Do search ---> 
<cfquery name="data" datasource="#datasource#"> 
select distinct company_name 
From closed_tickets 
where ticket_type = "billable" AND company_name LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#arguments.term#%" /> 
order by company_name 
</cfquery> 

<!--- Build result array ---> 
<cfloop query="data"> 
<cfset titleStruct = structNew() /> 
<cfset titleStruct['value'] = company_name/> 
<cfset titleStruct['label'] = company_name /> 

<cfset arrayAppend(returnArray,titleStruct) />  
</cfloop> 

<!--- And return it ---> 
<cfreturn returnArray /> 
</cffunction> 

<cffunction name="getAddress" access="remote" returnType="string"> 
<cfargument name="customer_name2" type="any" required="true"> 

<!--- localize function variables ---> 
<cfset var addressDetail = ""> 
<cfoutput> 
<cfquery name="addressDetail" datasource="#datasource#"> 
    SELECT company_address 
    FROM closed_tickets 
    <!--- adjust cfsqltype if needed ---> 
    WHERE company_name = <cfqueryparam value="#ARGUMENTS.customer_name2#" cfsqltype="cf_sql_varchar"> 
</cfquery> 
</cfoutput> 
<cfreturn addressDetail.company_address> 
</cffunction> 

<cffunction name="getEmailAddressDetail" access="remote" returnType="string"> 
<cfargument name="customer_name2" type="any" required="true"> 

<!--- localize function variables ---> 
<cfset var dataDetail = ""> 
<cfoutput> 
<cfquery name="emailDetail" datasource="#datasource#"> 
    SELECT email 
    FROM closed_tickets 
    <!--- adjust cfsqltype if needed ---> 
    WHERE company_name = <cfqueryparam value="#ARGUMENTS.customer_name#" cfsqltype="cf_sql_varchar"> 
</cfquery> 
</cfoutput> 
<cfreturn dataDetail.email> 
</cffunction> 

<cffunction name="getPhoneDetail" access="remote" returnType="string"> 
<cfargument name="customer_name2" type="any" required="true"> 

<!--- localize function variables ---> 
<cfset var dataDetail = ""> 
<cfoutput> 
<cfquery name="dataDetail" datasource="#datasource#"> 
    SELECT phone 
    FROM closed_tickets 
    <!--- adjust cfsqltype if needed ---> 
    WHERE company_name = <cfqueryparam value="#ARGUMENTS.customer_name#" cfsqltype="cf_sql_varchar"> 
</cfquery> 
</cfoutput> 
<cfreturn dataDetail.phone> 
</cffunction> 

</cfcomponent> 

내 첫 번째 양식 필드가 제대로 작동하고 그러나 나는 내가 콘솔 오류를 revieve, 내 AJAX 호출에서 내 응답 데이터가 불을 지르고에서 볼 수 있습니다

Uncaught ReferenceError: response is not defined 

내 AJAX 호출의 응답으로 두 번째 양식 필드의 값을 올바르게 설정할 수 있습니까? 감사.

+1

. 그렇다면 아무 것도 없다는 것을 깨달았습니다. 당신이 그것을 알아 낸 것을 기쁘게 생각하지만, 원래의 질문에 코드를 "고치지"않으십시오. 왜냐하면 대답은 더 이상 의미가 없기 때문입니다. :) 컨텍스트를 유지하기 위해 롤백 된 편집. – Leigh

+0

참고로,'cfquery' 태그 주위에'cfoutput'이 필요없고,'var/local' 범위의 쿼리 이름도 잊지 마십시오. – Leigh

+0

권. 그래, 그건 말이된다. 미안합니다. BYW, 내가 빠뜨린 부분, 그게 무엇이라고 언급 했습니까? 기본적으로 함수 (응답)를 지정하여 함수에 응답 데이터를 전달하지만 함수를 범위 지정한다고합니다.> ???? 실례지만 내 무지. –

답변

1

나는 혼자 답변을 찾았습니다. 내 성공 함수를 정의 할 때 나는 분명히 버려졌다.

나는이 내 성공의 기능을 변경하고 일했다 :이하고 "답"의 차이를 알아 내려고 머리를 긁적했다

success: function(response) { 
      $("##customer_address2").val(response); 
     }