2012-07-27 61 views
7

Tôi đang cố sử dụng biến trong lời gọi AJAX trong jquery nhưng nó không hoạt động. biến di chuyển chứa các giá trị khác nhau. Vui lòng kiểm tra mã sau:Dữ liệu biến trong cuộc gọi ajax JQUERY

var $move = 'next'; 

$.ajax({ 
    type: "POST", 
    url: "somephp.php", 
    data: {$move:1}, 
}); 

Đề xuất bất kỳ cách nào để sử dụng biến số di chuyển $ trong dữ liệu.

+0

dữ liệu chấp nhận cặp giá trị chính. Hiện tại, động thái $ của bạn đóng vai trò quan trọng và đó là lý do tại sao nó không hoạt động. Làm cho nó một giá trị và nó sẽ làm việc .. Giống như dữ liệu: {"dữ liệu": $ di chuyển} – AdityaParab

+1

Tôi nghĩ rằng những gì người dùng đang hỏi là làm thế nào để vượt qua một cái gì đó khác nhau cho phần quan trọng của cặp giá trị. –

+1

Nếu anh ta thực sự muốn sử dụng biến làm khóa? –

Trả lời

3

Nó phải là

$.ajax({ 
    type: "POST", 
    url: "somephp.php", 
    data: {"data":$move}, 
}); 
+0

$ di chuyển là chìa khóa không phải là giá trị. –

+0

Tôi đoán anh ấy muốn đăng giá trị của $ di chuyển. Hãy đợi anh ấy làm rõ. :) – AdityaParab

+1

Trên thực tế, trông giống như tôi '$ di chuyển' là một biến, và OP whishes để sử dụng nó như là chìa khóa, và giá trị nên là' 1'. Cho đến nay chỉ Wolfram đã đúng! – adeneo

8

Nếu bạn muốn có một biến-biến trong yêu cầu POST của bạn, bạn sẽ cần phải thực hiện một đối tượng riêng biệt JSON:

var name = 'next'; 
var dataObject = {}; 
dataObject[name] = 1; 

$.ajax({ 
    type: "POST", 
    url: "somephp.php", 
    data: dataObject, 
    complete : function() { 
    // success! 
    } 
}); 
+1

Tôi đã tìm ra điều này với rất nhiều nghiên cứu, vì vậy để tham khảo, khi 'dữ liệu' là một PlainObject và không phải là một String, sử dụng' complete: function (response) 'trả về một PlainObject. Ví dụ, 'alert (response)' trả về '[object Object]' và 'console.log (response)' trả về 'Object {readyState: 4, responseText:" example ", trạng thái: 200, statusText:" OK "}' . Vì vậy, để lấy 'responseText', sử dụng' success: function (response) '. –

0

Để đăng giá trị của biến $ di chuyển, hãy thực hiện điều này:

$.ajax({ 
    type: "POST", 
    url: "somephp.php", 
    data: {move: $move} 
}); 
1

Bạn có thể làm điều gì đó như data: $move+"=1"

+0

Lỗi cú pháp :) – AdityaParab

+0

Đã trả lời với người dùng giả định muốn biến đó làm khóa. –

+0

+1, công trình này và trái ngược với hầu hết các câu trả lời khác (không phải của tôi tất nhiên :)), nó giải quyết vấn đề đúng. – Wolfram

9

Nếu bạn muốn sử dụng biến làm tên của thuộc tính, hãy sử dụng ký hiệu mảng.

There are two ways to access object members: dot notation and bracket notation (a.k.a. subscript operator).

Mã của bạn với ký hiệu mảng:

var $move = 'next'; 
var data = {}; 
data[$move] = 1; 

$.ajax({ 
    type: "POST", 
    url: "somephp.php", 
    data: data, 
}); 

The example on jsfiddle (. Các bài rõ ràng không hoạt động, vì vậy kiểm tra giao diện điều khiển để xem những gì được đăng)

+1

Tôi đã có một vấn đề tương tự (cần thiết để cho phép một biến trong tên) và điều này là chính xác những gì cần thiết. – Voodoo

-1

Dường như bạn đang cố gắng sử dụng biến PHP trong javascript. Bạn có thể sử dụng .serialize để thu thập dữ liệu và chuyển nó vào cuộc gọi ajax. Nhưng đối với việc thực hiện cuộc gọi với các biến có tên khác nhau cho tên của cặp giá trị, bạn sẽ cần phải thu thập thông tin đó từ trang php bạn đang chuyển.

Ví dụ:

$.get("jQueryFunctions.php?action=checkCaptula",$('#resetPasswordDiv :input').serialize()).done(function(data){ .... 

Trong khi đây là một .get thay vì một .ajax, nó chỉ là viết tắt cho các cuộc gọi ajax. PasswordDiv chứa các đầu vào HTML với tên và id. Nó thu thập thông tin và chuyển nó đến trang php để xử lý.

Các vấn đề liên quan