none
Ajax post request - ERRORE RRS feed

  • Domanda

  • Salve a tutti,

    è il mio primo thread sul forum e vi ringrazio in anticipo per la disponibilità.

    Da qualche settimana sono entrato nel mondo di Azure e non ho quindi molta esperienza in merito; per questo motivo vorrei capire il perchè di un errore che ho riscontrato in seguito alla chiamata della funzione Ajax di jQuery che effettua una richiesta in POST.

    Si tratta di un'applicazione MVC 4 correttamente funzionante in locale ma NON su Azure. Di seguito il codice:

    function Validate()
            {
                $.ajax
                ({
                    type: "POST",
                    url: "",
                    data:
                        {
                            id: $("#id").val(),
                            name: $("#name").val(),
                            address: $("#address").val(),
                            latitude: $("#lat").val(),
                            longitude: $("#lon").val()
                        },
                    dataType: "json",
                    traditional: true,
                    success: function (data, textStatus) {
                        if (data.success) {
                            // some code
                        }
                        else{
                            // some code
                        }
                    },
                    error: function (xhr, textStatus, exceptionThrown) {
                        window.location.href = "http://google.com";
                    }
                });
            }
    <input type="button" id="confirm" value="Confirm" onclick="Validate()" />

    Quando clicco sul bottone "Confirm" l'applicazione mi rimanda al link "http://google.com".

    Come detto precedentemente in locale funziona tutto perfettamente, ovvero viene chiamata la action Index definita in HomeController.cs.

    Nel file RouteConfig.cs vi è una sola route così definita:

    routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );

    Analizzando la richiesta da Fiddler noto che viene restituito errore 500.

    Non saprei come risolvere questa situazione, se qualcuno può aiutarmi vi ringrazio!!!

    Marco

    domenica 5 maggio 2013 22:25

Risposte

  • Ciao marco,

    anche a me in locale (su Apache), va a google...

    Sono convinto che il parametro url della chiamata AJAX sia la causa di tutto, ti consiglio di inserire la URL esplicitamente... E' probabile che in locale ti funzioni perché la URL "" viene interpretata correttamente...

    Ho fatto un test con i seguenti file e tutto funziona come dovrebbe, ma ho reso esplicita la URL della chiamata AJAX:

    index.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://code.jquery.com/jquery-1.9.1.min.js" type="text/javascript"></script>
    </head>
    
    <body>
    <script language="javascript" type="text/javascript">
    function Validate() {
    	$.ajax({
    		type : "POST",
    		url : "test.html",
    		data : {
    		},
    		dataType : "json",
    		traditional : true,
    		success : function(data, textStatus) {
    			alert(data.test);
    		},
    		error : function(xhr, textStatus, exceptionThrown) {
    			window.location.href = "http://google.com";
    		}
    	});
    }
    </script>
    
    <input type="button" id="confirm" value="Confirm" onclick="Validate()" />
    
    </body>
    </html>

    test.html

    {"test":"test"}


    • Modificato dsmwb domenica 12 maggio 2013 14:45
    • Proposto come risposta dsmwb mercoledì 17 luglio 2013 00:42
    • Contrassegnato come risposta Irina Turcu giovedì 8 agosto 2013 12:13
    domenica 12 maggio 2013 14:43

Tutte le risposte

  • Nessuna idea ragazzi?

    Grazie..

    mercoledì 8 maggio 2013 06:34
  • Ciao marco,

    anche a me in locale (su Apache), va a google...

    Sono convinto che il parametro url della chiamata AJAX sia la causa di tutto, ti consiglio di inserire la URL esplicitamente... E' probabile che in locale ti funzioni perché la URL "" viene interpretata correttamente...

    Ho fatto un test con i seguenti file e tutto funziona come dovrebbe, ma ho reso esplicita la URL della chiamata AJAX:

    index.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://code.jquery.com/jquery-1.9.1.min.js" type="text/javascript"></script>
    </head>
    
    <body>
    <script language="javascript" type="text/javascript">
    function Validate() {
    	$.ajax({
    		type : "POST",
    		url : "test.html",
    		data : {
    		},
    		dataType : "json",
    		traditional : true,
    		success : function(data, textStatus) {
    			alert(data.test);
    		},
    		error : function(xhr, textStatus, exceptionThrown) {
    			window.location.href = "http://google.com";
    		}
    	});
    }
    </script>
    
    <input type="button" id="confirm" value="Confirm" onclick="Validate()" />
    
    </body>
    </html>

    test.html

    {"test":"test"}


    • Modificato dsmwb domenica 12 maggio 2013 14:45
    • Proposto come risposta dsmwb mercoledì 17 luglio 2013 00:42
    • Contrassegnato come risposta Irina Turcu giovedì 8 agosto 2013 12:13
    domenica 12 maggio 2013 14:43