我正在尝试将表单发布到远程服务器。到目前为止,一般的想法是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 is present on the requested resource.错误。

一些背景知识:我在共享主机上。我在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="*" />,请检查Web服务器配置。我的.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/

10-12 14:08