gpt4 book ai didi

json - 通过 AJAX Post 使用 JSON 将数据传递到 CFC 函数

转载 作者:行者123 更新时间:2023-12-03 22:51:24 24 4
gpt4 key购买 nike

我有一个 jquery 提交事件,它收集表单数据并将其放入 jquery 对象中。我想获取该 jquery 对象并将其传递到 Coldfusion Web 服务,在那里我可以使用它来更新 xml 文件。我不需要来自网络服务的响应,我只想将其发送到网络服务并处理那里的数据。

客户端/JQuery:

$("#update").on('submit',function() {
$linkName = $('#update').find('#linkName').val();
$linkURL = $('#update').find('#linkURL').val();
$linkInfo = $('#update').find('#linkDesc').val();
$numOfLinks = $('.linkSection').length;
if ($numOfLinks > 0){
// Here the sub link names and urls put into an array
$subLinkName = [];
$subLinkURL = [];
$('.linkSection').each(function(index, element) {
$subLinkName.push($(this).find('#subLinkName').attr('value'));
$subLinkURL.push($(this).find('#subLinkURL').attr('value'));

$data = {linkName: $linkName, linkURL: $linkURL, linkID : $linkID, linkDescription : $linkInfo, subLinkNames : $subLinkName, subLinkURLs : $subLinkURL};
});
// Optionally, you could put the name and url in the array object here but not sure which is better to do
//$subLink =[];
//$('.linkSection').each(function(index, element) {
//$subLink.push($(this).find('#subLinkName').attr('value'));
//$subLink.push($(this).find('#subLinkURL').attr('value'));
//});
}else{
alert('hey');
$data = {linkName: $linkName, linkURL: $linkURL, linkID : $linkID, linkDescription : $linkInfo};
}
//alert($data);
$.ajax({
type: "POST",
data: {
method: "UpdateRegularLink",
returnFormat:"json",
formData: JSON.stringify($data)
},
url: "../../WebServices/RMSI/rmsi.cfc",
contentType: "application/json; charset=utf-8",
dataType: "json",
beforeSend: function() {
alert('about to post');
},
error: function(data,status,error){
alert(data+': '+status+': '+error);
},
done: function(data){
alert('success');
}
});
});

服务器端/CFC:

<cfcomponent>

<cfset xmlpath = "e:\webapps\NRCNewsApps\RMSI\xml" />

<cffunction name="UpdateRegularLink" access="remote" output="false" >
<cfargument name="formData" required="true" type="string" />
<cfset var cfStruct = DeserializeJSON(arguments.formData)>

<!--- now I want to use the data --->
</cffunction>

</cfcomponent>

在 Chrome 中我收到“未经授权”在 Firebug 中我得到“意外的字符”

只需询问我,我会添加您需要的更多信息。

最佳答案

因此,当您对要传递给 Coldfusion 的数据进行字符串化时,Coldfusion 无法理解它,并向您的字符串添加各种字符,使其无法被 Coldfusion 读取。

必须使用 toString() 作为中间方法调用,因为 JSON 数据包作为字节数组(二进制数据)出现,需要先将其转回字符串,然后 ColdFusion 才能将其解析为 JSON 值。

也可以调用 @Chandan Kumar 将方法添加到 url 末尾,而不是将其与数据一起传递。事实上,我一直在翻阅那篇文章,但这最终就是它的工作原理,所以对你表示敬意

var ajaxResponse = $.ajax({
type: "POST",
url: "../../WebServices/RMSI/rmsi.cfc?method=UpdateRegularLinkmethod=,
contentType: "application/json; charset=utf-8",
data: JSON.stringify($data),
//dataType: "json",
beforeSend: function() {
//alert($data);
},
error: function(data,status,error){
alert(data+': '+status+': '+error);
}
}).done(function(entry) {
alert('success');
});


ajaxResponse.then(
function( apiResponse ){

// Dump HTML to page for debugging.
$( "#response" ).html( apiResponse );

}
);

CFC

<cfcomponent>
<cffunction name="UpdateRegularLink" access="remote" returntype="xml">

<cfset requestBody = toString( getHttpRequestData().content ) />

<!--- Double-check to make sure it's a JSON value. --->
<cfif isJSON( requestBody )>

<!--- Echo back POST data. --->
<cfdump
var="#deserializeJSON( requestBody )#"
label="HTTP Body"
/>

</cfif>


</cffunction>
</cfcomponent>

关于json - 通过 AJAX Post 使用 JSON 将数据传递到 CFC 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19146446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com