2011-03-02 5 views
1

J'essaie d'envoyer des données à mon code derrière la méthode. Cela fonctionne sauf lorsque j'ajoute au paramètre data. Pourquoi le param i ajouté provoque-t-il l'échec de la méthode Web? MISE À JOUR: Après avoir vu quelles erreurs côté client ont été lancées, il semble que l'ID est indéfini. Ma méthode d'obtention de l'ID des éléments est-elle incorrecte? Gardez à l'esprit que j'utilise jsTree et ca j'utilise éventuellement (obj)?jQuery Ajax demande à la méthode Web

+0

JSON utilise deux des guillemets autour des propriétés, donc ''{" nodeID ":"' + $ (this) .attr ('id') + '"}'' peut valoir la peine. – Robert

+0

@may être formmatting issue – kobe

+0

Il est intégré dans un jsTree c'est pourquoi il ressemble à ça. @ Robert J'ai essayé de changer les guillemets et cela n'a pas fonctionné. Lorsque les valeurs de paramètres de données sont supprimées, le service Web obtient le hit correctement. – balexander

Répondre

0

Après le débogage dans Chrome, j'ai découvert l'ID n'a pas été défini. Je réécris la date à param:

data: '{"nodeID": "' + obj.attr('id') + '"}', 

parce que le obj est le nœud que je suis actuellement en jsTree. Merci à tous ceux qui m'ont rappelé de déboguer dans FF ou Chrome et d'ajuster les guillemets.

+0

@bryan thats great, vous pouvez reconnaître la même chose en donnant ... vote .. toute façon votre problème est résolu grand – kobe

1

essayer quelque chose comme ci-dessous:

jQuery.parseJSON('{"name":"John"}'); 
+0

J'ai essayé 'var nodeID = jQuery.parseJSON ('{" nodeID ":"' + $ (this) .attr ('id') + '"}');' et en mettant 'data: nodeID,' mais pas de chance . Est-ce que j'ai fait quelque chose de mal? – balexander

+1

@pouvez vous alerter nodeID une fois et vérifier comment il est formulé – kobe

+0

@Veuillez vérifier dans le panneau net firebug comment les données vont backend. – kobe

0

essayez ceci:

data: "{nodeID: '" + $(this).attr('id') + "'}", 

Edit: comme pour obtenir un ID, vous pouvez utiliser this.id

0

Quelques choses à essayer

  1. Supprimer le contenuType
  2. Retirez les guillemets autour des touches JSON
  3. Swap les guillemets simples et doubles

Il ressemblera à ceci:

function (obj) { 
    $.ajax({ 
     type: "POST", 
     url: "Pages.aspx/EditPage", 
     data: '{nodeID: "' + $(this).attr('id') + '"}', 
     dataType: "json", 
     success: function (msg) { 
       alert('success!'); 
     } 
    }); 
} 
0

La référence 'this' que vous utilisez fait référence à jQuery 'this'. Par conséquent, votre ID n'est pas défini.

En supposant que vous essayez d'obtenir l'id « obj » de votre argument de la fonction, je réécrire la fonction comme ceci:

jQuery.fn.your_func_name = function(){ 

    $.ajax({ 
     type: "POST", 
     url: "Pages.aspx/EditPage", 
     data: "{'nodeID': '" + $(this).attr('id') + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
     // Replace the div's content with the page method's return. 

    }); 

}//function 

utiliser comme ceci:

$('#some_element').your_func_name();