javascript - ColdFusion CFC CORS 和 AJAX 帖子

标签 javascript jquery ajax coldfusion cors

我正在尝试将表单发布到远程服务器。目前的一般想法是 HTML 将在本地运行并通过 AJAX 发布到远程服务器。

所以有一个表单、JS 和它要发布到的 CFC。

下面是JS

$(document).ready(function () {
$("#submit").click(function(){
    var setName = $("input[name='setName']").val();
    var setNumber = $("input[name='setNumber']").val();
    var setTheme = $("input[name='setTheme']").val();

    var retailPrice = $("input[name='retailPrice']").val();
    var purchaseStore = $("input[name='purchaseStore']").val();
    var purchaseDate = $("input[name='purchaseDate']").val();
    var purchasePrice = $("input[name='purchasePrice']").val();

    var condition = $("input[name='condition']").val();

    var sellPrice = $("input[name='sellPrice']").val();
    var sellStore = $("input[name='sellStore']").val();
    var selldate = $("input[name='selldate']").val();

$.ajax({
    type: 'get',
    url: 'http://www.chesteraustin.us/cfc/entry.cfc?ReturnFormat=json',  
    data: {
        method: 'setEntry',
        Set_Name: setName, //CFARGUMENT: JS_VARIABLE
        Set_Number: setNumber,
        Set_Theme: setTheme,
        Retail_Price: retailPrice,
        Purchase_From: purchaseStore,
        Purchase_Price: purchasePrice,
        Purchase_Date: purchaseDate,
        Status: condition,
        Sell_Date: sellPrice,
        Sell_from: sellStore,
        Sell_date: selldate
        },
    contentType: 'json',
    dataType: 'json',
    success: function(response) {
        console.log("you da man");
        }
    });    
}); 
});

下面是它被发布到的 CFC(为了简洁我删掉了很多):

<cfcomponent>
<cfheader name="Access-Control-Allow-Origin" value="*" />
<cfheader name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE" />
<cfheader name="Access-Control-Allow-Headers" value="Content-Type" />

<cffunction name="setEntry" access="remote">
    <cfreturn 1>
</cffunction>

</cfcomponent>

编辑:清理了 CFC,删除了多余的评论。

在做研究时,我发现 CFHEADER 应该放在最前面,以允许跨源,但是,Chrome 仍然显示 No 'Access-Control-Allow-Origin ' header 出现在请求的资源上。 错误。

一些背景知识:我在共享主机上。我在 CFC 所在的文件夹中有一个空白的 Application.CFC。

最佳答案

经过大量研究,我找到了解决方案。 ColdFusion 代码按预期工作。但是,还有其他东西控制 header (在这种情况下,它是 Apache)。

使用 http://enable-cors.org/server_apache.html作为指南,我使用以下内容修改了我的 public_html 目录中的 .htaccess 文件:Header set Access-Control-Allow-Origin "*" . Chrome 出现了另一个错误,指出 Access-Control-Allow-Headers 没有 Content-Type,所以我也添加了它:Header set Access-Control-Allow-Headers Content-Type .瞧,它开始工作了。

总而言之,如果 ColdFusion 上的 CORS 不工作:<cfheader name="Access-Control-Allow-Origin" value="*" /> , 检查网络服务器配置。我的.htaccess文件现在有两行,CORS 现在可以工作了。

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers Content-Type

关于javascript - ColdFusion CFC CORS 和 AJAX 帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22487309/

相关文章:

javascript - 将多个 && 条件合并为 1

javascript - jQuery : To find the closest tr class

javascript - 将 JAVASCRIPT 转换为 JQUERY 以缩短代码

c# - .NET (ApiController)/jQuery .ajax : what to return from POST?

javascript - 从 native iOS 应用程序打开另一个应用程序

javascript - 如何从特定类别中获取所有 Unicode 字符?

javascript - 回调代表什么?

javascript - 更改背景图像

ajax - 使用 MooTools 在任何 ajax 请求上自定义 header

php - 为什么在查询中设置 group_concat_max_len 变量会导致 PHP 的 bind_param() 出错?