2015-10-29 3 views
4

Прежде чем я начну, я, по общему признанию, очень новичок в jquery, на самом деле у меня не было javascript background от 3 месяцев назад.Передача массива с jquery компоненту ColdFusion

То, что я пытаюсь выполнить, - это получить массив информации, который у меня есть в jquery, и передать этот массив в файл .cfc, где информация может обрабатываться.

Вот мой JQuery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script type="text/javascript" src="jquery.json.min.js"></script> 
 
<script type="text/javascript"> 
 
    $(function() { 
 
    var mydata = {data:[1,2,3,4,5]}; 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t 
 
    $.post('test.cfc', {method:"handleArray", returnFormat:"plain", argumentCollection: $.toJSON(mydata)}, function(res) { 
 
    alert($.trim(res)); 
 
    }); 
 
    }); 
 
</script>

Это был кусок кода найденный с поста Стивен Дункан Jr около 5 лет назад.

Вот холодный синтез:

<cfcomponent> 
 

 
<cffunction name="handleArray" access="remote" returnType="numeric"> 
 
<cfargument name="data" type="array" required="true"> 
 

 
    <cfquery name = "qTest" datasource="#REQUEST.dsn#" username="#REQUEST.dsu#" password="#REQUEST.dsp#"> 
 
    INSERT INTO test 
 
     (value1, value2, value3, value4, value5) 
 
    VALUES (
 
     <cfqueryparam cfsqltype="cf_sql_integer" value="#handleArray[1]#">, 
 
     <cfqueryparam cfsqltype="cf_sql_integer" value="#handleArray[2]#">, 
 
     <cfqueryparam cfsqltype="cf_sql_integer" value="#handleArray[3]#">, 
 
     <cfqueryparam cfsqltype="cf_sql_integer" value="#handleArray[4]#">, 
 
     <cfqueryparam cfsqltype="cf_sql_integer" value="#handleArray[5]#">) 
 
    </cfquery> 
 

 
<cfreturn arrayLen(arguments.data)> 
 
</cffunction> 
 

 
</cfcomponent>

Этот код, конечно же, просто тест, чтобы получить его работу. Но мне нужно передать около 40 переменных в cfc.

Любая информация, которая может быть предоставлена, будет чрезвычайно оценена, особенно все, что объясняет, почему результат работает.

+4

Какова конкретная проблема или вопрос? – charlietfl

+1

Код не работает, и я не знаю почему. Предупреждение в jquery никогда не срабатывает, и я должен предположить, поэтому CFC не запускается. –

+0

Что вы пробовали? Какие шаги вы уже предприняли для устранения этой проблемы? –

ответ

2

@TimHowey там кажется проблема с вашим методом jquery post. Я думаю, вот что вам нужно сделать:

<script type="text/javascript" src="jquery.json.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     var mydata = "[1,2,3]"; 
     $.post('test.cfc', { 
      method: "handleArray", 
      returnFormat: "plain", 
      data: mydata 
     }, function(res) { 
      alert("ok"); 
     }); 
    }); 
</script> 

Вы используете метод пост так каждая вещь будет послана в form области. В вашем ск, все, что вам нужно сделать, это десериализовать аргумент вроде этого:

<cffunction name="handleArray" access="remote" returnType="numeric"> 
     <cfargument name="data" type="any" required="true"> 
     <cfset var getArray = DeserializeJSON(arguments.data)/> 
     <cfset var qTest = ""> 

     <cfquery name = "qTest" datasource="#REQUEST.dsn#" username="#REQUEST.dsu#" password="#REQUEST.dsp#"> 
      INSERT INTO test 
      (value1, value2, value3) 
      VALUES (
       <cfqueryparam cfsqltype="cf_sql_integer" value="#getArray[1]#">, 
       <cfqueryparam cfsqltype="cf_sql_integer" value="#getArray[2]#">, 
       <cfqueryparam cfsqltype="cf_sql_integer" value="#getArray[3]#"> 
     ) 
     </cfquery> 

     <cfreturn arrayLen(getArray)> 
    </cffunction> 

EDIT

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script type="text/javascript" src="jquery.json.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     var mydata = '[1,"keshav",3]'; 
     $.post('test.cfc', { 
      method: "handleArray", 
      returnFormat: "plain", 
      data: mydata 
     }, function(res) { 
      alert("ok"); 
     }); 
    }); 
</script> 
+0

Хорошо, это первый бит света, который я видел на моей проблеме до сих пор. Я вижу информацию, сбрасываемую в firebug, но это не в том формате, который я ожидал. Поэтому теперь я смущен тем, как я получаю это оттуда в cfquery, но по крайней мере мне есть с чем работать. –

+0

@TimHowey обновил мой ответ, проверяя как jquery, так и код CF –

+0

Кажется, я получаю сообщение об ошибке в firebug. "500 Вы попытались разыменовать скалярную переменную типа class java.lang.String как структуру с членами." –

Смежные вопросы