2012-07-27 71 views
7

我想在jQuery中使用AJAX調用中的變量,但它不工作。移動變量包含不同的值。請檢查以下代碼:ajax調用中的變量數據JQUERY

var $move = 'next'; 

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

建議任何方式在數據中使用$ move變量。

+0

數據接受鍵值對。 現在你的$ move是作爲關鍵,這就是爲什麼它不起作用。使其成爲一個值,它應該工作..像數據:{「data」:$ move} – AdityaParab 2012-07-27 11:55:33

+1

我想用戶問的是如何傳遞值對的關鍵部分不同的東西。 – 2012-07-27 11:58:44

+1

如果他真的想將該變量用作關鍵字會怎麼樣? – 2012-07-27 11:59:30

回答

3

應該

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

$移動是關鍵而不是價值。 – 2012-07-27 11:56:55

+0

我猜他想發佈$ move的價值。 讓我們等待他澄清。 :) – AdityaParab 2012-07-27 11:59:01

+1

實際上,在我看來'$ move'是一個變量,並且OP希望將它用作鍵,值應該是'1'。到目前爲止,只有Wolfram沒有做到! – adeneo 2012-07-27 12:01:27

8

如果你想在你的POST請求可變變量, 您將需要一個單獨 JSON對象:

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

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

我不得不通過大量的研究來解決這個問題,所以作爲參考,當'data'是PlainObject而不是String時,使用'complete:function(response)'返回一個PlainObject。例如,'alert(response)'返回'[object Object]'並且'console.log(response)'返回'Object {readyState:4,responseText:「example」,status:200,statusText:「OK」}' 。因此,要檢索'responseText',請使用'success:function(response)'。 – 2016-01-05 19:36:58

0

要發佈$ move變量的值,請執行以下操作:

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

如果你想使用變量作爲屬性,使用數組符號的名稱,您可以不喜歡data: $move+"=1"

+0

語法錯誤:) – AdityaParab 2012-07-27 11:59:44

+0

以用戶希望變量爲關鍵的假設作出響應。 – 2012-07-27 12:00:03

+0

+1,這有效,並與大多數其他答案(當然不是我的)相反),它解決了正確的問題。 – Wolfram 2012-07-27 12:02:22

9

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

您的代碼使用數組方式:

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

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

The example on jsfiddle(後顯然是行不通的,所以檢查的控制檯,看看有什麼被公佈)

+1

我有一個類似的問題(需要允許名稱中的變量),這正是需要的。 – Voodoo 2013-04-05 21:45:40

-1

它看起來像你試圖在JavaScript中使用PHP變量。您可以使用.serialize來收集數據並將其傳遞給ajax調用。但對於使用不同的命名變量調用值對的名稱,您需要從您傳遞的PHP頁面收集該信息。

例子:

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

儘管這是一個不用彷徨,而不是阿賈克斯,它只是爲阿賈克斯調用的簡寫。 passwordDiv包含具有名稱和ID的HTML輸入。它收集信息並將其傳遞給php頁面進行處理。