2009-04-23 27 views
5

Estoy tratando de encontrar la sintaxis correcta para pasar una variable a mi JQuery Post.JQuery AJAX sintaxis

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

No creo que los datos: el valor es bastante correcto. Alguien me enderezó?

Gracias!

Respuesta

9

¿Qué tal esto:

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 puede ser una cadena URL codificada o un objeto:

data: {empid: empid}, 

O

data: "empid=" + empid, 

Los documentos dicen:

datos a enviar al servidor. Se convierte a una cadena de consulta, si no ya una cadena. Se adjunta a la url para solicitudes GET. Vea la opción processData para evitar este procesamiento automático. El objeto debe ser pares clave/valor. Si value es una matriz, jQuery serializa múltiples valores con la misma clave, es decir {foo: ["bar1", "bar2"]} se convierte en '& foo = bar1 & foo = bar2'.

2

Esto debería funcionar para usted.

$.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

No lo es. Estás pasando una cadena, deberías pasar un objeto literal, p. Ej.

data: {"empid" : empid} 

Ver la diferencia? Suponiendo empid es una variable con algún tipo de valor, que debería funcionar bien. Alternativamente, usted puede hacer esto

data: "empid="+empid 

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

0

si desea enviar una cadena JSON al servidor

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

si desea enviar querystring params (? Empid = 123)

data: {empid : empid} 
0

puede usar lo siguiente.

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

Aunque no es una respuesta directa a su pregunta, siguiendo es el enfoque de la función común utilizada en uno de nuestros proyectos para jQuery llama

$.proxy() Method

El método proxy tiene una función existente y devuelve uno nuevo con un contexto particular.

Sintaxis

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

Referencias

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