2009-04-23 14 views
5

Próbuję znaleźć poprawną składnię, aby przekazać zmienną do mojego postu JQuery.Składnia 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); 
    } 

Nie sądzę, dane: wartość jest całkiem w porządku. Ktoś mnie wyprostował?

Dzięki!

Odpowiedz

9

Jak o tym:

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 może być albo URL zakodowany ciąg znaków lub obiekt:

data: {empid: empid}, 

LUB

data: "empid=" + empid, 

Docs powiedzieć:

dane mają być wysłane do serwera. Jest konwertowany na ciąg zapytania, jeśli nie jest już ciągiem. Jest on dołączany do adresu URL żądania GET. Zobacz opcję processData, aby zapobiec automatycznemu przetwarzaniu. Obiekt musi być parami klucz/wartość. Jeśli wartość jest tablicą, jQuery szereguje wiele wartości za pomocą tego samego klucza, tj. {Foo: ["bar1", "bar2"]} staje się "& foo = bar1 & foo = bar2 '.

2

To powinno działać dla Ciebie.

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

To nie jest. Przekazujesz ciąg znaków, powinieneś przekazać literał obiektu, np.

data: {"empid" : empid} 

Widzisz różnicę? Zakładając, że empid jest zmienną o pewnym rodzaju wartości, która powinna działać poprawnie. Alternatywnie można to zrobić

data: "empid="+empid 

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

0

jeśli chcesz wysłać ciąg JSON do serwera

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

jeśli chcesz wysłać kwerendy params (? EmpID = 123)

data: {empid : empid} 
0

Możesz użyć następujących.

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

Choć nie jest to bezpośrednia odpowiedź na pytanie, po to podejście powszechne funkcja stosowana w jednym z naszych projektów dla jQuery zwraca

$.proxy() Method

Sposób Pełnomocnik wykonuje istniejącą funkcję i zwraca nowy z określonym kontekstem.

składnie

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

KOD

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

ODNOŚNIKI

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