Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: $.ajax e Json

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245

    $.ajax e Json

    Ciao a tutti,
    ho una semplice chiamata Ajax ad un servizio JSP che genera del JSON, che va a sua volta a costituire il "source" del widget di jQuery Autocomplete. La chiamata pare funzionare correttamente, usando Firebug vedo la chiamata al file ad ogni keydown e vedo che il servizio mi restituisce i dati correttamente, un esempio:

    codice:
    countries: [
    { label: "Bafata", value: "624" },
    { label: "Baghdad", value: "368" },
    { label: "Bahai", value: "148" },
    { label: "Baidoa", value: "706" },
    { label: "Baku", value: "031" },
    { label: "Bamako", value: "466" },
    { label: "Bambari", value: "140" },
    { label: "Bamyan", value: "004" },
    { label: "Banda Aceh", value: "360" },
    { label: "Bangladesh", value: "050" },
    { label: "Bangui", value: "140" },
    { label: "Banjul", value: "270" },
    { label: "Barentu", value: "232" }]
    Questa invece è la chiamata, all'interno del "source" dell'autocomplete, che invece di funzionare e quindi di fare l'alert che c'e' in success, fa l'alert dell'errore "Error: jQuery18206355412469404962_1348839613044 was not called":

    codice:
    $( "#city" ).autocomplete({ 			
    source: function( request, response ) { 				$.ajax(url,{ 					
    dataType: "json", 					
    data: { search: $("#city").val() }, 					
    success: function( data ) { 						alert("here"); 						 					}, 					
    error:function (xhr, ajaxOptions, thrownError) {         				alert(thrownError);       				
    } 				
    }); 			
    } 		
    });
    Non capisco dove sta il problema. Per info, magari centra qualcosa, la pagina ed il servizio stanno su due macchine diverse.

    Grazie
    Laura

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133

    Re: $.ajax e Json

    Originariamente inviato da Imnotdead
    ... Per info, magari centra qualcosa, la pagina ed il servizio stanno su due macchine diverse. ...
    In tal caso documentati su jsonp di jquery
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3

    Re: $.ajax e Json

    Nella source dovresti passare l'oggetto "countries".

    Dai un'occhiata a questa discussione:
    http://forum.html.it/forum/showthrea...readid=1522245

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    @Andrea => hanno corretto il tipo di file che chiamo con il corretto header, ora è json : )
    @Luca => guardo subito, al max riposto

    Grazie!
    L.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    @Luca: non ho ben capito quella discussione, il problema sembra diverso dal mio.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    @Laura non ho capito il tuo messaggio, comunque intendevo visto che la query la fai su "macchine" diverse, forse risolvi con una chiamata jsonp di jquery sempre che tua abbia la gestione di entrambi le "macchine"
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Originariamente inviato da Imnotdead
    @Luca: non ho ben capito quella discussione, il problema sembra diverso dal mio.
    Ti segnalavo quella discussione perchè usa una source uguale alla tua, un array di oggetti.
    Dovrebbe essere sufficiente passare direttamente l'url del servizio JSP, senza usare una callback:
    codice:
    $( "#city" ).autocomplete({ 			
        source:'http://www.urlDelServizioJSP.com' 		
    });

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Grazie Luca, non avevo afferrato il suggerimento. Alla fine ho fatto un test usando $.getJson invece di $.ajax, funziona se chiamo un file json in locale ma se chiamo il file .json generato da un web service non funziona, non ritorna niente...Sarò scema ma non capisco perchè.

    Questo il nuovo codice:

    codice:
    $('#city').autocomplete({ 
    			source: function (request,response) {
    				 $.getJSON("http://myserver.com/myjsonfile.json?search=" + request.term + "&format=json", function(data) {
    					response($.map(data.country, function(item) {
               				return {
    							label: item.countryName + "",
    							value: item.countryUNCode + ""
    						}
    						return data;
                		}));
            		});
    			},
    			minLength: 3
    		});
    Ed il file JSON che viene generato, ad es. passando "A":

    codice:
    {"country":[{"countryName":"Abidjan","countryCode":384,"regionId":"","regionName":""},{"countryName":"Abyei","countryCode":729,"regionId":"","regionName":""},{"countryName":"Accra","countryCode":288,"regionId":"","regionName":""},{"countryName":"Addis Ababa","countryCode":231,"regionId":"","regionName":""},{"countryName":"Aden","countryCode":887,"regionId":"","regionName":""},{"countryName":"Afghanistan","countryCode":"004","regionId":"","regionName":"Asia"},{"countryName":"Aioun-el-Atrouss","countryCode":478,"regionId":"","regionName":""},{"countryName":"Akon","countryCode":729,"regionId":"","regionName":""},{"countryName":"Algeria","countryCode":"012","regionId":"","regionName":"Middle East, North Africa, Eastern Europe and Central Asia"},{"countryName":"Amboasary","countryCode":450,"regionId":"","regionName":""},{"countryName":"Amman","countryCode":400,"regionId":"","regionName":""},{"countryName":"Ampanihy","countryCode":450,"regionId":"","regionName":""},{"countryName":"Amran","countryCode":887,"regionId":"","regionName":""},{"countryName":"Angola","countryCode":"024","regionId":"","regionName":"Southern Africa"},{"countryName":"Antananarivo","countryCode":450,"regionId":"","regionName":""},{"countryName":"Armenia","countryCode":"051","regionId":"","regionName":"Middle East, North Africa, Eastern Europe and Central Asia"},{"countryName":"Arusha","countryCode":834,"regionId":"","regionName":""},{"countryName":"Asmara","countryCode":232,"regionId":"","regionName":""},{"countryName":"Atambua","countryCode":360,"regionId":"","regionName":""},{"countryName":"Attapeu","countryCode":418,"regionId":"","regionName":""},{"countryName":"Awassa","countryCode":231,"regionId":"","regionName":""},{"countryName":"Aweil","countryCode":728,"regionId":"","regionName":""},{"countryName":"Ayacucho","countryCode":604,"regionId":"","regionName":""},{"countryName":"Azerbaijan","countryCode":"031","regionId":"","regionName":"Middle East, North Africa, Eastern Europe and Central Asia"}]}

  9. #9
    Si vede che $.getJSON non è crossdomain.
    Prova ad usare $.ajax con dataType:'jsonp', come suggeriva Andrea.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Ciao Luca,
    $.getJson è crossdomain dalla 1.2, http://docs.jquery.com/Ajax/jQuery.getJSON
    Ora mi ritorna i dati ma mi da "Invalid Label"...bah!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.