发送JSON时AJAX调用失败,但可使用URL样式字符串

时间:2012-07-21 作者:Josh Close

当我的数据是URL样式的字符串时,发出AJAX请求是可行的。

var options = {
    type: \'post\',
    data: \'action=my_action\'
};
该函数将被调用并返回一些虚假数据。

如果我尝试进行相同的调用,但使用JSON,则不会起作用。我已经尝试了几种不同的方法,但管理员。php只需返回-1。

jQuery或Wordpress中是否有需要更改的内容以允许这样做?

以下是我尝试过的其他几种方法。

var options = {
    type: \'post\',
    data: { action: \'my_action\' }
};

var options = {
    type: \'post\',
    data: JSON.stringify({ action: \'my_action\' })
};
文档中的示例也使用了JSON对象。http://codex.wordpress.org/AJAX_in_Plugins

2 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

首先,stringify 不会构建URL查询-它将其序列化为JSON对象表示法。

其次,您甚至不需要构建URL查询-如果您使用jQuery进行AJAX调用,只需按原样传递JSON对象-jQuery.param() 将在内部处理:)

SO网友:W van Dam

如果您没有复制wordpress codex中提供的错误实践示例,请忽略此回复。

如果您是,我建议您在WP中正确(安全)使用Ajax阅读本文:http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/

那篇文章实际上也链接到了codex页面上,所以我很想知道为什么codex页面上的示例仍然按原样编写。

结束