2009-09-22 4 views
13

En ce moment je suis en utilisant la méthode post comme celui-cijquery ajax obtenir par exemple

$.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); } 
    } 
}); 

Ai-je raison de croire que si j'utilise une requête GET au lieu de POST le comportement va changer d'être une demande synchrone c'est-à-dire que l'exécution attendra la réponse du serveur? Est-ce que quelqu'un peut me montrer un exemple jquery GET appelant une webmethod d'un service web directement? MISE À JOUR: L'utilisation du drapeau asynchrone comme suggéré ci-dessous est vraiment tout ce dont j'avais besoin pour le faire, cela fonctionne pour moi. Je suis toujours curieux de savoir quel travail doit être fait pour le code ci-dessus pour en faire une demande GET. Changer de type: "GET" n'a pas l'effet désiré!

+0

que voulez-vous dire qu'il n'a pas l'effet « désiré »? Comment savez-vous qu'il est encore POST? –

Répondre

11

Vous pouvez décider si vous voulez que l'appel ajax être async ou ne pas utiliser ceci:

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

Pour répondre à votre premier point, non: GET et POST sont indépendants de synchrone/asynchrone. Vous pouvez utiliser la méthode booléenne async pour contrôler cela.

0

regarder cet exemple peut-être vous aider

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

Il y a un drapeau « async » pour faire l'appel ajax synchrone ou asynchrone. Vous pouvez le définir comme:

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