2016-04-13 8 views
0

Wie kann ich eine AJAX-Anfrage in ColdFusion machen?AJAX-Anfrage in ColdFusion

Ich habe meine 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){ 

     } 
    }); 
    } 

Meine Komponente:

component displayName="Calc" { 

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

Ich erhalte die Fehlermeldung: JSON Parsen Versagen bei dem Charakter 2: 'o' in [object Object], [Objekt Objekt] Kann jemand AJAX-Anfrage in CF tun?

+0

'Daten: data.join()' ist nicht, wie Sie Json erstellen. Coldfusion wird nicht in der Lage sein, es zu deserialisieren, als ob es json wäre. –

+0

Wenn Sie jQuery verwenden, warum verwenden Sie 'document.getElementById()'? Verwenden Sie jQuery, um diese Werte abzurufen. 'data.push ($ ('# customersid'))' Ich habe festgestellt, dass dies ein großartiges Werkzeug ist, um Formulardaten einfach in json zu bringen, https://github.com/macek/jquery-serialize-object –

Antwort

1

Diese Funktion:

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

ist nicht vollständig. Es ist in der Phase, wo Sie es von einer ColdFusion-Seite aufrufen müssen, nicht mit Javascript. Dadurch können Sie die Ergebnisse des Befehls writedump(data) sehen, um sicherzustellen, dass Sie das erwarten. Sie müssen der Funktion mehr Code hinzufügen, damit sie eine Variable erzeugt, die JavaScript empfangen kann, und diese Variable dann an das zurückgeben, was die Funktion aufruft.

+0

Das habe ich behoben mit JSON.stringify (Daten), aber ich bekomme Parserfehler, wenn ich Daten von CFC zu AJAX – Apprentice123456

+0

@ Apprentice123456 - Bitte aktualisieren Sie Ihre Frage und fügen Sie den aktuellen Code und Fehlermeldung. – Leigh

0

Das Problem bezieht sich auf dataType Attribut, das Sie mit $.ajax() Methode übergeben. dataType: "json" zeigt an, dass Ihre AJAX-Anfrage JSON Daten als Antwort erwartet. Aber in Ihrem Fall geben Sie einfach DUMP des deserialisierten JSON zurück, das ist HTML nicht JSON. Wenn Sie möchten, dass es ordnungsgemäß funktioniert, müssen Sie JSON Daten von Ihrer ColdFusion-Funktion zurückgeben. Sie können dies versuchen und sehen, ob es funktioniert.

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