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');"

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

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

但是,这当然行不通……当然也行不通:

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

那么聪明人会怎么做呢?

4

3 回答 3

1

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

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

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

$.ajax({
  type: dataMethod,
  data: dataStream,
  url: '../' + targetURL,
  // ...
于 2012-10-15T14:03:25.817 回答
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\"});"
于 2012-10-15T14:03:37.387 回答
1

它期待一个对象,所以给它一个:

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

然后在函数内部:

    data: dataStream,

没有大括号

于 2012-10-15T14:04:49.953 回答