是否可以將預定義變量傳遞給成功調用jQuery $ .get請求的函數?
如PHP腳本下面的例子將返回「吧」:
var extra = "foo";
$.get(baar.php, function(data, extra){
alert(extra + data);
});
因此,我的目標是一個警告框,宣佈「foobar的」走向世界。
謝謝。
是否可以將預定義變量傳遞給成功調用jQuery $ .get請求的函數?
如PHP腳本下面的例子將返回「吧」:
var extra = "foo";
$.get(baar.php, function(data, extra){
alert(extra + data);
});
因此,我的目標是一個警告框,宣佈「foobar的」走向世界。
謝謝。
由於JavaScript範圍的工作原理,您不需要通過它,extra
將在回調中可用。所以:
var extra = "foo";
$.get('baar.php', function(data){
alert(extra + data);
});
哦哇......有時候我覺得它太簡單了......但是謝謝! – Matte 2013-05-07 21:41:58
我可以修改'額外'變量嗎?在「get」的調用之後它會存活嗎? – Throoze 2013-08-30 10:03:28
@Throoze是的,但請記住get調用是異步的。 '$ .get'後面的行將在get請求完成之前運行,如果您檢查'extra',那麼它仍將包含未修改的值。 – bfavaretto 2013-08-30 14:03:28
我不認爲這是可能的。但你可以使用外部變量內部功能
var extra = "foo";
$.get(baar.php, function(data){
alert(extra + data);
});
我知道這個職位是舊(ER),但我有同樣的問題,我想我會發佈下一個傢伙的解決方案。基本上,就像上面說的bfalvretto,jquery的.get()和.post()函數是異步的,所以當它獲得遠程url時,變量的值是不同的。
我的解決方案是將它的.get()部分放入它自己的單獨函數中,以限制回調的範圍。 這就是我想出的:
$("#SomethingClick").click(function(e) {
e.preventDefault();
$.post("..getURL", { id: 123 }, function(data) {
for (i = 0; i < data.rows.length; i++) {
ExternalFunction(data.rows[i].Value1, data.rows[i].Value2);
}
});
});
...
function ExternalFunction(value1, value2) {
$.get("/Core/ContactViewer/" + contactID, function (data2) {
$("someoutputdiv").html("<div>" + value1 + ": " + value2 + "</div>");
});
}
希望這會有所幫助。
我不知道爲什麼這在我的情況下工作,但確實如此,謝謝!我有一個'for'循環,每次迭代都會聲明一個值,但它仍然使用所有'.get'回調的最終值。 – Magicode 2015-05-28 02:12:22
JavaScript函數是閉包。除了引用變量之外,不需要做任何事情。 – 2013-05-07 20:12:58
......這樣說,另一種選擇是從'$ .get()'返回'jqxhr'對象併爲其添加屬性。該對象將作爲回調的第三個參數以及'this'值提供,允許您檢索該屬性。這有助於使您的功能可重用。 – 2013-05-07 20:15:00