2016-12-22 3 views
3

Я использую AJAX для вызова CFC, и я пытаюсь передать две переменные из запроса, который я запускал. Мой Аякса выглядит следующим образом:Вызов CFC с несколькими аргументами с использованием AJAX

$.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

Тег 'cfreturn' в вашем cfc выглядит хлопотно. –

ответ

4

Вам не хватает значения " для customer_name в ваших атрибутах данных функции Ajax. Ваша функция Ajax должен выглядеть как этот

$.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. вы возвращаете переменную, доза которой не существует и такая же, как имя вашей функции. Если вы делаете что-то вроде этого он будет работать

<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> 

Если вы хотите весь объект запроса будет возврат, как вы Аякса ответ затем разобрать JSON на успех AJAX и обработать его дальше

+0

Хорошо, я вижу, как тег имеет больше смысла. Но какая информация хранится в переменной msg в функции успеха? Это только те данные, которые отправляются в теге ? Кроме того, мой CFC теперь выбрасывает эту ошибку: нельзя использовать String [All About Care] для значения типа [JSON] - All About Care - это значение поля customer_name, возвращаемого запросом. –

+1

Если вы возвращаете весь объект запроса, тогда CF преобразует ваш запрос в JSON, а затем отправит его обратно. Таким образом, ваш msg в успехе будет содержать строку JSON, которую вам нужно либо проанализировать, либо вы можете установить dataType: «JSON» для вашего ajax функция в этом случае будет автоматически анализироваться. Если вы возвращаете только один объект запроса формы customer_name, то у вас есть успешное объявление с именем customer_name, и вам не нужно его анализировать. –

+0

Хорошо, поэтому я обновил свое оригинальное сообщение с вашими предложениями. Теперь я не получаю никаких ошибок в моей консоли, но я вижу jesut [object Object] в поле ввода HTML. Это потому, что я все еще разбираю эти данные? Я предполагаю, что мне нужно настроить это так, чтобы у меня был JSON для синтаксического анализа, потому что я хочу вернуть весь запрос с более чем одним столбцом данных. –