2012-05-06 3 views
2

Работает следующий код. Я бы хотел сделать это, чтобы не принимать одно значение для принятия массива объектов, так что вместо публикации 1 «Item One» я просматриваю объект и отправляю 1, «Item One», 2, "Пункт второй" и т.д.Как разместить несколько строк через Ajax

!function($, window, undefined) { 
    var local = {}; 
    local.data = {}; 
    local.type= 'post', 
     local.dataType= 'json', 
     local.data.method = 'Save', 
     local.data.ItemNo = 1; 
     local.data.ItemName = 'Item One'; 

    var myPromise = $.ajax('Upload.cfc',local); 
    myPromise.done(function(result) { 
     console.log('success!'); 
    }); 

    myPromise.fail(function(A,B,C) { 
     $('body').append(A.responseText); 
     console.log(B); 
     console.log(C); 
    }); 
}(jQuery, window); 

И

<cfcomponent> 
<cffunction name="Save" access="remote"> 
    <cfargument name="ItemNo"> 
    <cfargument name="ItemName"> 
    <cfset var local = {}> 

    <cfquery datasource="#Application.Datasource#" username="#Application.Username#" password="#Application.Password#"> 
    INSERT INTO lru.Item(ItemNo,ItemName) VALUES 
    (<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.ItemNo#"> 
    ,<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.ItemName#" maxlength="10"> 
    ) 
    </cfquery> 
</cffunction> 
</cfcomponent> 

ответ

1

index.cfm:

<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
     $('#save').click(function(){ 
      $.ajax({ 
      url: 'add.cfc?method=addData&returnFormat=json', 
      type: "post", 
      data: { dataArray: [$('#test1').val(),$('#test2').val(),$('#test3').val() ] }, 
      dataType: 'json', 
      success: function(data){ 
       $('#result').html(data); 
      } 
      }); 
     }); 
     }); 
    </script> 
    </head> 
    <body> 
    <form name="sub" method="post"> 
     Test1: <input type="text" name="test1" id="test1" /><br /> 
     Test2: <input type="text" name="test2" id="test2" /><br /> 
     Test3: <input type="text" name="test3" id="test3" /><br /> 
     <button type="button" id="save" name="save">Save</button> 
    </form> 

    <div id="result" /> 

    </body> 

add.cfc:

<cfcomponent> 
    <cffunction name="addData" access="remote" returntype="string" > 
     <cfargument name="dataArray" type="array" /> 

     <cfset var result = "" /> 

     <cfloop array="#arguments.dataArray#" index="i" > 
      <cfset result = result & "R: " & i & ", " /> 
     </cfloop> 

     <cfreturn result /> 

    </cffunction> 
</cfcomponent> 

В этом примере вы должны пройти, просто передайте массив из javascript в ColdFusion, а затем запустите этот массив в вашем cfc.

+0

Это все? Это кажется слишком легким! Я собираюсь попробовать это прямо сейчас! –

+0

Я получаю: «NetworkError: 500 Element DATAARRAY не определен в ARGUMENTS. - http://www.phillipsenn.com/Matrix/JSON/Paul/add.cfc?method=addData&returnFormat=json« –

+0

Ну, я могу добавить JSON.stringify и передать его как строку, но тогда мне придется разбить строку в cfc. Что может быть не так уж плохо. –

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