JQuery AJAX Wie bekomme ich und analysieren JSONP anstelle von JSON?

Zusammenfassung

Ich habe eine Anwendung, die eine Suche. Bevor Sie senden, sendet er einen AJAX-Aufruf eine Abfrage, um zu überprüfen, ob ein Gültiger zip-code, und gibt dann eine JSON-Resultat, das ich analysieren kann. Ich brauche die gleiche Sache zu tun cross-domain jetzt, und ich weiß, dass ich die volle url und JSONP-format anstelle, aber ich bin mir nicht sicher, wie Sie dies einrichten.

Der AJAX-Aufruf


Ich senden Sie ein zip-code, der ausgeführt wird durch eine Abfrage.

if (zipLength == 5) {
    $.ajax({
        type:"GET", 
        //location of the cfc
        url: "cfc/test.cfc",
        //function name and url variables to send
        data: {method:'zip_lookup', zip:zip},
        //function run on success takes the returned json object and reads values.
        success: function(obj) {
            var response = $.parseJSON(obj);

            if (response.formError == true) {
                alert(response.message);
            }
        }
    });
}


Der CFC in Coldfusion Läuft Die Abfrage

<!---Makes sure entered zip exists--->   
<cffunction name="zip_lookup" access="remote">
    <cfquery name="qZip">
        Select Distinct ZipCode
        From zipcodes
        Where ZipCode = '#url.zip#'
    </cfquery>

    <!---Return an error if zip was not found--->
    <cfif qZip.RecordCount EQ 0>
        <cfset formError = true>
        <cfset message = "Invalid Zip">
    <cfelse>
        <cfset formError = false>
        <cfset message = "">   
    </cfif>

    <cfoutput>
        <cfset obj = 
            {
                "formError" = formError,
                "message" = message
            } 
        />
    </cfoutput>

    <cfprocessingdirective suppresswhitespace="Yes"> 
        <cfoutput>
            #serializeJSON(obj)#
        </cfoutput>
    </cfprocessingdirective>

    <cfsetting enablecfoutputonly="No" showdebugoutput="No">
</cffunction>


Die JSON-Antwort


Dies ist, was die Abfrage zurückgibt.

{"message":"Invalid Zip","formError":true} 


Umgang Mit Der Antwort


Wie ich schon oben in der AJAX-success-Funktion, die ich greifen kann, die formError oder message-Variablen aus der JSON-Antwort. Wie ich kann ich dies mit JSONP?

success: function(obj) {
    var response = $.parseJSON(obj);

    if (response.formError == true) {
        alert(response.message);
    }
}

InformationsquelleAutor madvora | 2015-01-14
Schreibe einen Kommentar