2016-04-13 3 views
0

Как я могу выполнить запрос AJAX в ColdFusion?Запрос AJAX в ColdFusion

У меня есть 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; 
} 

Я получаю сообщение об ошибке: JSON синтаксического анализа неудачи в характере 2: 'о' в [объект Object], [объект Object] Кто-нибудь знает, как сделать запрос AJAX в CF?

+0

данные: data.join() 'не так, как вы создаете json. coldfusion не сможет десериализировать его, как если бы это был json. –

+0

Если вы используете jQuery, почему вы используете 'document.getElementById()'? Используйте jQuery для получения этих значений. 'data.push ($ ('# customersid'))' Я нашел это отличным инструментом для простого ввода данных формы в json, https://github.com/macek/jquery-serialize-object –

ответ

1

Эта функция:

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

не является полным. Это на том этапе, когда вы должны называть его с страницы ColdFusion, а не с javascript. Это позволит вам увидеть результаты команды writedump(data), чтобы убедиться, что вы ожидаете. Вы должны добавить больше кода в функцию, чтобы заставить его создать переменную javascript, которую можно получить, а затем вернуть эту переменную в то, что вызывает функцию.

+0

Я исправил, что используя JSON.stringify (данные), но я получаю parsererror, когда возвращаю данные из CFC в AJAX – Apprentice123456

+0

@ Apprentice123456 - Пожалуйста, обновите свой вопрос и добавьте текущий код И сообщение об ошибке. – Leigh

0

Вопрос связан с dataType атрибутом, который вы передаете с помощью метода $.ajax(). dataType: "json" указывает, что ваш запрос AJAX ожидает в качестве ответа JSON данных. Но в вашем случае вы просто возвращаете DUMP десериализованного JSON, который HTML не JSON. Поэтому, если вы хотите, чтобы он работал правильно, вам нужно вернуть JSON данные из вашей функции ColdFusion. Вы можете попробовать это и посмотреть, работает ли оно.

remote function ajaxGetTotalCost(data){ 
    data = deserializeJSON(arguments.data); 
    return serializeJSON(data)); 
} 
Смежные вопросы