在jquery.ajax调用中将参数传递给'data'属性

时间:2013-04-26 07:59:29

标签: javascript ajax string object

开始在这个上撕掉我的头发所以我花时间问:

我有一个像这样的jquery函数:

function run_script(prog, args){

var out;

jQuery.ajax({
    method: 'POST',
    url: prog,
    async: false,
    data: args,
    success: function(result){
        out = jQuery.parseJSON(result);
    }
})

return out;

}

现在,当我调用该函数时,我会执行类似

的操作
jQuery(document).ready( function(){
    jQuery('#some_button').click( function(){
        run_script('my_script.pl',{ "key" : "value"} );
    })
})

但是我似乎在函数中格式化我插入args的变量,我没有在脚本中捕获我想要的参数(我确信脚本可以工作,因为它在其他地方使用)。如果我将它们作为对象传递(如上所述),我根本就没有参数。如果我将它们作为字符串传递 - 即run_script('my_script.pl','{ "key" : "value"}' );(在{ "key" : "value" }附近添加了引号,那么我似乎在脚本中接收keywords: {(不,这不是错误 - 只是单词{ {1}}和一个大括号。

如果我回过头来将数据作为对象传递,然后在函数内但在ajax调用之前将其字符串化 - 那么现在就像

keywords

然后整个字符串确实被传递 - 但是它被收到var dat = jQuery.toJSON(args); jQuery.ajax({ method: 'POST', url: prog, async: false, data: dat, success: function(result){ out = jQuery.parseJSON(result); } }) ,而不是所需的格式keywords='{ "key" : "value" }'

如果我对key=value属性进行硬编码,请执行以下操作:

data

然后好像通过魔法一样,脚本会选择jQuery.ajax({ method: 'POST', url: prog, async: false, data: { "key": "value" }, success: function(result){ out = jQuery.parseJSON(result); } }) 。任何人都可以对此有所了解吗?我该怎么做才能以正确的方式将信息传递到key=value

0 个答案:

没有答案