2009-04-23 9 views
5

J'essaie de trouver la syntaxe correcte pour passer un varible à mon message JQuery.Syntaxe JQuery AJAX

var id = empid; 

$.ajax({ 
    type: "POST", 
    url: "../Webservices/EmployeeService.asmx/GetEmployeeOrders", 
    data: "{empid: empid}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(result) { 
     alert(result.d); 
    } 

Je ne pense pas que data: value soit correct. Quelqu'un m'a mis droite?

Merci!

Répondre

9

Que diriez-vous ceci:

var id = empid; 

$.ajax({ 
    type: "POST", 
    url: "../Webservices/EmployeeService.asmx/GetEmployeeOrders", 
    data: "{empid: " + empid + "}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(result){ 
     alert(result.d); 
     console.log(result); 
    } 
}); 
4

data peut être une chaîne codée URL ou un objet:

data: {empid: empid}, 

OU

data: "empid=" + empid, 

Les docs disent:

données à envoyer au serveur. Il est converti en une chaîne de requête, si ce n'est déjà une chaîne. Il est ajouté à l'URL pour les demandes GET. Voir l'option processData pour empêcher ce traitement automatique. L'objet doit être une paire clé/valeur. Si value est un tableau, jQuery sérialise plusieurs valeurs avec la même clé, c'est-à-dire {foo: ["bar1", "bar2"]} devient '& foo = bar1 & foo = bar2'.

2

Cela devrait fonctionner pour vous.

$.ajax({ 
    type: "POST", 
    url: "../Webservices/EmployeeService.asmx/GetEmployeeOrders", 
    data: {empid: empid}, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(result) { 
     alert(result.d); 
} 
0
$(document).ready(function() { 
    $.ajax({ 
    type: "POST", 
    url: "Webservices/EmployeeService.asmx/GetEmployeeOrders", 
    data: "{'EmployeeId':'empid'}", **<-- see the single quotes** 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
      alert(msg); 
     } 
    }); 
}); 
1

Ce n'est pas. Vous passez une chaîne, vous devriez passer un littéral d'objet, par exemple.

data: {"empid" : empid} 

Voir la différence? En supposant que empid est une variable avec une sorte de valeur, cela devrait fonctionner correctement. Sinon, vous pouvez le faire

data: "empid="+empid 

http://docs.jquery.com/Ajax/jQuery.ajax#options

0

si vous voulez envoyer une chaîne JSON au serveur

data: "{empid: " + empid + "}" 

si vous voulez envoyer querystring params (? empid = 123)

data: {empid : empid} 
0

vous pouvez utiliser ce qui suit.

var id = empid; 

$.ajax({ 
    type: "POST", 
    url: "../Webservices/EmployeeService.asmx/GetEmployeeOrders", 
    data: "var1=val1&var2=val2&var3=val3&var4=val4&var5=val5", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (result) { 
     alert(result.d); 
    } 
1

Bien que pas une réponse directe à votre question, à la suite est l'approche de fonction commune utilisée dans l'un de nos projets pour les appels jquery

$.proxy() Method

La méthode Proxy prend une fonction existante et renvoie un nouveau avec un contexte particulier.

syntaxes

$(selector).proxy(function,context) 
$(selector).proxy(context,name) 

CODE

dpInvokeAsync: function (serviceRequest, input, requestType, successCallBack) { 
     var url = BASE_URL + serviceRequest; 
     $.ajax({ 
      type: requestType, 
      url: url, 
      async: true, 
      data: input, 
      dataType: 'json', 
      success: $.proxy(successCallBack, this), 
      error: $.proxy(this.handleFailure, this) 
     }); 
    } 


    this.dpInvokeAsync('App/ShowParts', searchCriteria, 'Post', 
         function (result) { alert(result);} 
        ); 

RÉFÉRENCES

  1. $(this) inside of AJAX success not working
  2. jQuery Cross-Domain AJAX Request methods