2010-12-15 34 views
2

page HTML

// in script tag 
    $(document).ready(function() { 
     var url = "list.ashx"; 

     $.get(url + "?get", function (r1) { alert("get: " + r1); }); 
     $.post(url + "?post", function (r2) { alert("post: " + r2); }); 
     $.ajax(url + "?ajax", function (r3) { alert("ajax: " + r3); }); 
     $("div:last").load(url + "?load", function (r4) { alert("load: " + r4); }); 
    }); 

    // in body tag 
    <div></div> 

dans 'list.ashx'

public void ProcessRequest (HttpContext context) { context.Response.Write("ok"); } 

le résultat

  • .get $ et $ .post atteindre list.ashx mais sans retour
  • $ .ajax pas atteint list.ashx
  • .load $ entièrement le succès

Les problèmes sont

  • pourquoi seul travail ».load $? Comment faire fonctionner $ .get ou $ .post?

mise à jour

 $("input").click(function() { 
      $.ajax({ url: url 
       , context: this 
       , data: "ajax=test" 
       , cache: false 
       , async: false 
       , global: false 
       , type:"POST" 
       , processData: false 
       , dataType: "html" 
       , success: function (data) { alert(data); } 
       , error: function (data) { alert(data.responseText); } 
       }); 
     }); 

il est toujours frappé d'erreur: function() {} mais le 'data.responseText' est le résultat correct !!

+2

Le Firebug « net » onglet ou le suivi des ressources de Chrome devrait dire vous plus sur ce qui arrive aux demandes. –

+2

* "$. Ajax n'atteint pas list.ashx" * C'est parce que vous appelez incorrectement 'ajax': http://api.jquery.com/jQuery.ajax/ Mais ne vous inquiétez pas,' get' et 'post' ne sont que des wrappers pour cela, vous pouvez le supprimer de votre expérience. Par curiosité, qu'arrive-t-il à '$ .get (url +"? Load ", fonction (r1) {alert (" get: "+ r1);});'? (Note J'ai changé la chaîne de requête.) –

Répondre

6

Eh bien, la raison pour laquelle votre $.ajax() ne fonctionne pas est parce que c'est syntactically invalid. Il devrait ressembler à ceci:

$.ajax({ 
    type: "POST", // or "GET" 
    url: "list.ashx", 
    data: "postvar=whatever", 
    success: function(r3){ 
     alert("ajax: " + r3); 
    } 
}); 

En outre, lors de l'utilisation $.get et $.post, vous devez mettre les données dans le second paramètre:

$.get(url, 'getvar=whatever', function (r1) { alert("get: " + r1); }); 
$.post(url, 'postvar=whatever', function (r2) { alert("post: " + r2); }); 

// or use a map 

$.get(url, { getvar : 'whatever' }, function (r1) { alert("get: " + r1); }); 
$.post(url, { postvar : 'whatever' }, function (r2) { alert("post: " + r2); }); 
+1

+1 Ceci est correct, et explique de manière concluante pourquoi '$ .ajax' ne revient jamais. – karim79