我尝试了很多不同的选项来在不使用 jquery 的情况下将 json 数据发送到 cfc,我的问题是如何使用 XMLHttpRequest() 而不是 $.ajax 来完成此操作?它将请求发送到 CFC,但我无法将任何变量传递给 cfc,它一直显示“FORMDATA”(这是我未传入的),我有一个名为表单数据的变量。我能够让它工作的唯一方法是使用新的 formData() 对象,但我需要它在 IE 8 和 9 中工作?
<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);
};
我不知道我做错了什么?
最佳答案
您需要发送表单编码数据,使其处于 FORM
范围内(远程调用 CFC 函数时为参数
)。因此将内容类型更改为:
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
并将 send() 调用更改为:
xhr.send("formdata="+ JSON.stringify(data));
它应该以 JSON 字符串的形式传递给 arguments.formdata
参数。
关于javascript - 有没有办法使用 XMLHttpRequest() 将 json 发送到远程 cfc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19523625/