2009-09-22 21 views
13

Por el momento estoy usando el método post como estejquery ajax obtener ejemplo

$.ajax({ 
    type: "POST", 
    url: "Servicename.asmx/DoSomeCalculation", 
    data: "{param1ID:"+ param1Val+"}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     UseReturnedData(msg.d); 
    }, 
    error: function(err) { 
     alert(err.toString()); 
     if (err.status == 200) { 
      ParseResult(err); 
     } 
     else { alert('Error:' + err.responseText + ' Status: ' + err.status); } 
    } 
}); 

Estoy en lo correcto al creer que si uso una petición GET en lugar de la POST del comportamiento cambiará de ser una petición síncrona es decir, la ejecución esperará hasta que se reciba la respuesta del servidor.

¿Alguien puede mostrarme un ejemplo de Jquery GET llamando a un webmethod de un servicio web directamente?

ACTUALIZACIÓN: El uso del indicador asíncrono como se sugiere a continuación es realmente todo lo que necesitaba hacer, así que esto funciona para mí. Sigo teniendo curiosidad sobre qué trabajo se debe hacer con el código anterior para convertirlo en una solicitud GET. Cambio de tipo: "GET" no tiene el efecto deseado!

+0

¿qué quiere decir que no tiene el efecto 'deseado'? ¿Cómo sabes que todavía está POST? –

Respuesta

11

Usted puede decidir si desea que la llamada AJAX para ser asíncrona o no el uso de este:

$.ajax({ 
    async: false/true, 
    //more options 
}); 
6

Para responder a su primer punto, no: GET y POST son independientes de síncrono/asíncrono.

Puede usar el método booleano async para controlar esto.

0

mirada esta muestra puede que le ayude

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
    xmlhttp.open("GET","ajax_info.txt",true); 
    xmlhttp.send(); 
1

Hay una bandera "asíncrono" para hacer la llamada ajax síncrona o asincrónica. Se puede definir como:

$.ajax({ async: false/true, //rest of code });