ColdFusion中的AJAX请求

AJAX request in ColdFusion

本文关键字:请求 AJAX 中的 ColdFusion      更新时间:2024-06-19

如何在ColdFusion中执行AJAX请求?

我有我的javascript:

function getdata(){
    var formElements=document.getElementById("CFForm_1").elements;    
    var data=[];
    for (var i=0; i<formElements.length; i++){
        if(formElements[i].name == 'customersid')
            data.push({'customersid':document.getElementById("customersid").value});
        if(formElements[i].name == 'customerstoid')
            data.push({'customerstoid':document.getElementById("customerstoid").value});
    }
    $.ajax(
    {
        type: "get",
        url: "components/BillingCalc.cfc",
        data: {
                method:"ajaxGetTotalCost",
                data: data.join()
            },
        dataType: "json",
        success: function( objResponse ){
        }
    });
  }

我的组件:

component displayName="Calc" {
remote function ajaxGetTotalCost(data){
    data = deserializeJSON(arguments.data);
    WriteDump(data); abort;
}

我收到错误:[object object],[object object'中的字符2:'o'处的JSON解析失败有人知道如何在CF中进行AJAX请求吗?

此函数:

remote function ajaxGetTotalCost(data){
data = deserializeJSON(arguments.data);
WriteDump(data); abort;
}

不完整。它处于必须从ColdFusion页面调用它的阶段,而不是使用javascript。这将使您能够看到writedump(data)命令的结果,以确保它符合您的期望。您必须向函数添加更多的代码,使其生成javascript可以接收的变量,然后将该变量返回给调用该函数的任何对象。

问题与使用$.ajax()方法传递的dataType属性有关。dataType: "json"表示AJAX请求期望JSON数据作为响应。但在您的情况下,您只是返回反序列化JSON的DUMP,即HTML而不是JSON。因此,如果您希望它正常工作,那么您需要从ColdFusion函数返回JSON数据。你可以试试这个,看看它是否有效。

remote function ajaxGetTotalCost(data){
   data = deserializeJSON(arguments.data);
   return serializeJSON(data));
}