我正在尝试将表单发布到远程服务器。到目前为止,一般的想法是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/