簡體   English   中英

這個javascript如何運作?

[英]How does this javascript work?

我是javascript菜鳥,我不明白為什么這樣做:

$().load('/my/url/', {my:data, more:data}, jsFunc());

function jsFunc()
{
    $("#myid").val("yep");
}

但這不是:

$().load('/my/url/', {my:data, more:data}, function() {jsFunc()});

function jsFunc()
{
    $("#myid").val("yep");
}

我嘗試了$ .ajax而不是$ .load,結果相同。 我將響應數據傳遞給jsFunc(),這就是為什么我在函數內部需要jsFunc()的原因。 我敢肯定這很簡單,只是我對javascript不太了解。 謝謝。

再次感謝您提供的所有幫助。 我決定使用$ .post,因為它最適合這種情況,但是現在我在響應數據上遇到了麻煩。 我的代碼如下所示:

$.post('/my/url/', {my:data, more:data}, function(data) {
    var strung = JSON.stringify(data)
    var parse = jQuery.parseJSON(strung)
    console.log(parse.some);}, 'json');

我正在登錄控制台以查看現在返回的內容,當我看到記錄的正確值時將添加回調。 我從jQuery api頁面獲得的過程,但只會記錄undefined 當我將parse.some更改為parse ,控制台日志將顯示對象,並且我可以選擇一個元素並查看正確的key:value對。 任何幫助都會很甜蜜。

都不行。 第一個似乎有效,因為您立即調用了jsFunc函數,因此它不等待任何響應。

如果您使用$()創建一個空的jQuery對象並在其上使用load方法,它將不會調用服務器,因為沒有元素可以放置結果。

要指定回調函數,請使用函數名稱:

$('#someElement').load('/my/url/', {my:data, more:data}, jsFunc);

或函數表達式:

$('#someElement').load('/my/url/', {my:data, more:data}, function() { jsFunc(); });

第一個代碼塊將簡單地調用jsFunc()並將結果作為參數返回給load(..)方法,這很奇怪,因為該參數應該是在加載完成時觸發的回調函數,但這行得通嗎? 回調語法與第二個示例更加一致(我相信您所說的無效)。

回答我的第二部分:

我返回的JSON數據由許多對象組成,因此我必須指定索引和鍵來獲取要返回的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM