2013-10-22 23 views
1

我已經嘗試了很多不同的選項來發送json數據到一個cfc而不使用jquery,我的問題是如何使用XMLHttpRequest()而不是$ .ajax來完成?它將請求發送給CFC,但我不能將任何變量傳遞給cfc,它一直說「FORMDATA」(這是我的不傳入),我有一個稱爲表單數據的變量。我能夠實現它的唯一方法是使用新的formData()對象,但我需要它在IE 8和9中工作?有沒有辦法使用XMLHttpRequest()將json發送到遠程cfc?

<cfcomponent> 

    <cffunction name="validate" access="remote" > 

     <cfargument name="formdata" required="true" type="string"/> 

     <!--- <cfif isJSON(arguments.formdata)> 
      <cfset values = deserializeJSON(arguments.formdata)> 
     </cfif> ---> 
     <cfdump var="#variables#"> 
     <cfdump var="#arguments#"> 

     <cfreturn { STATUS = 200, MESSAGE = "data recieved"}> 

    </cffunction> 

</cfcomponent> 

這裏是我的javascript

  var xhr = new XMLHttpRequest(); 
     xhr.open("POST", "validation.cfc?method=validate", true); 
     xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 

      // send the collected data as JSON 
     xhr.send(JSON.stringify({formdata:data})); 

     xhr.onloadend = function() { 
      console.log(xhr.responseText); 
     }; 

我不知道我做錯了嗎?

+0

標題不代表您真正的問題。 –

+0

我很抱歉我重新寫了標題 – Jesse

回答

1

您需要發送表單編碼數據使其位於FORM範圍內(在遠程調用CFC功能的情況下爲arguments)。因此,改變內容類型:

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

,改變在send()調用:

xhr.send("formdata=" + JSON.stringify(data));

,它應該作爲一個JSON字符串到arguments.formdata參數來通過。

+0

這是一個很好的方式來做到這一點謝謝我其實我也做了它與角js – Jesse

+0

哈哈好吧,你說沒有jquery所以我認爲你的意思是沒有任何類型的圖書館B/C你只限於由於某種原因,普通的ol'js。 :) –

0
 var params = "method=validate&returnformat=json"; 
     params += "&formdata=" + json; 

     $http({ 
       method: 'POST', 
       url: 'validation.cfc', 
       data:params, 
       headers: {"Content-type":"application/x-www-form-urlencoded"} 
     }).success(function(data){ 

      console.log(data); 

     }) 
相關問題