在变量中传递变量?

时间:2012-10-15 13:59:04

标签: javascript jquery ajax

我有一个看起来像这样的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');"

这非常好......但是现在函数认为add是一个变量......但在某些情况下,我需要在onClick中声明someAction一个值,如下所示:

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

然而,这当然不起作用......也没有当然:

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

那么聪明人会做什么?

3 个答案:

答案 0 :(得分:1)

这是因为你正在混合字符串和对象。 为了做我认为你想做的事,你应该调用这样的函数:

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

,即你传递一个对象作为第四个参数,而不是一个字符串,那么,在你的函数中,你应该按原样处理该对象,即

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

答案 1 :(得分: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\"});"

答案 2 :(得分:1)

它期待一个物体,所以给它一个:

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

然后在函数内部:

    data: dataStream,

没有大括号