javascript - 有没有办法使用 XMLHttpRequest() 将 json 发送到远程 cfc?

标签 javascript ajax json coldfusion

我尝试了很多不同的选项来在不使用 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/

相关文章:

javascript - 设计: One AJAX Call or multiple AJAX calls to get list of details

jquery - 如何使用jquery解析json结果

java - Jackson 自定义序列化和反序列化

java - Golang/Java 无法从中间件中解码 JSON

javascript - JQuery革命 slider 链接到特定幻灯片

Javascript 循环并将键存储为变量并从存储的键中输出附加字段?

javascript - 我希望页面在用户单击所有链接后重定向

javascript - jquery 获取上一个元素的内容

jquery更新整个页面同名的类

php - Jquery post回调不起作用