2012-10-15 55 views
1

我有一個AJAX功能看起來像這樣(基本上,它簡化):在變量內傳遞變量?

function getPage(targetURL, targetID, dataMethod, dataStream) { 
    $.ajax({ 
    type: dataMethod, 
    data: { dataStream }, 
    url: '../' + targetURL, 
    success: 
     function(server_response) { 
      $('#' + targetID).html(server_response).show(); 
     } 
    }); 
    return false; 
} 

我然後把要調用的函數是這樣的:

onclick="getPage('myPage.php', 'content', 'GET', 'someAction: add');" 

這是非常好的...但現在的功能添加認爲是一個變量...但在某些情況下,我需要用一個值來聲明someAction,從內部的onClick,就像這樣:

onclick="getPage('myPage.php', 'content', 'GET', 'someAction: "add"');" 

然而,日在當然不工作...當然也沒有:

onclick="getPage('myPage.php', 'content', 'GET', 'someAction: \"add\"');" 

那麼智者會做什麼?

+2

那麼,對於初學者來說,聰明人不會使用'onclick'內聯事件處理程序! – BenM

+0

一個選項是:'data:dataStream,'和'onclick =「getPage('myPage.php','content','GET','someAction = add');」'。 –

+1

LOL @BenM我正要寫同樣的東西。 – epascarello

回答

1

這是因爲你在混合字符串和對象。 爲了做我認爲你想做的事,你應該這樣調用該函數:

onclick="getPage('myPage.php', 'content', 'GET', { someAction: 'add' });" 

即要傳遞一個對象作爲第四個參數,而不是一個字符串,那麼,在你的函數,你應該把該對象,因爲它是即

$.ajax({ 
    type: dataMethod, 
    data: dataStream, 
    url: '../' + targetURL, 
    // ... 
1

你傳遞dataStream作爲一個字符串,你不應該 - 它應該是一個對象字面:

function getPage(targetURL, targetID, dataMethod, dataStream) { 
    $.ajax({ 
    type: dataMethod, 
    data: dataStream , 
    url: '../' + targetURL, 
    success: 
     function(server_response) { 
      $('#' + targetID).html(server_response).show(); 
     } 
    }); 
    return false; 
} 

,然後:然後

onclick="getPage('myPage.php', 'content', 'GET', {someAction: add});" 

在函數內部:

onclick="getPage('myPage.php', 'content', 'GET', {someAction: add});" 

onclick="getPage('myPage.php', 'content', 'GET', {someAction: \"add\"});" 
1

它期待一個對象,所以給它一個

data: dataStream, 

而不大括號