2012-10-15 57 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, 

而不大括号