gpt4 book ai didi

php - 使用 ajax 保存 wordpress 设置 api 选项,

转载 作者:可可西里 更新时间:2023-11-01 13:12:27 25 4
gpt4 key购买 nike

我已经为这个问题苦苦挣扎了一段时间。我有一个主题选项页面,并注册了一个选项。

每次用户按下保存按钮时,我一直在尝试通过 ajax 更新选项,这是我的代码。

JS:

       function save_main_options_ajax() {

$('.main-options-form').submit( function () {

var b = $(this).serialize(),
optdata = { action : "wp_ajax_main_options_save", data: b };

$.post( ajaxurl, b, function (response) {
if (response == 1 ) { alert('sucess'); }
else { alert(optdata);}
});
return false;
});
}
save_main_options_ajax();

PHP:

 function main_options_save_ajax() { 

check_ajax_referer('_wpnonce', '_wpnonce' );

$data = $_POST;
unset($data['option_page'], $data['action'], $data['_wpnonce'], $data['_wp_http_referer']);


if ( update_option('main_options', $data ) )
{ die(1); }
else { die (0); }
}
add_action('wp_ajax_main_options_save', 'main_options_save_ajax' );

我在 firebug 中看到的响应是 0。我不确定我在这里缺少什么,我尝试了一些变化但似乎没有任何效果。

最佳答案

找到了一种在使用 Settings API 时通过 ajax 保存设置的方法。

我在代码中犯的主要错误是我使用了错误的 url 路径。

而不是使用标准的 ajaxurl,这是在 wordpress 中进行 ajax 调用时通常使用的;我们使用您的设置 api 表单的操作调用,即 options.php

因为我们使用这个 url 路径,所以不需要 php 函数来处理请求,因为 options.php 为我们处理了所有这些。

因此我们只需要处理在我的实例中看起来像这样的js函数。

 function save_main_options_ajax() {
$('.main-options-form').submit( function () {
var b = $(this).serialize();
$.post( 'options.php', b ).error(
function() {
alert('error');
}).success( function() {
alert('success');
});
return false;
});
}
save_main_options_ajax();

就是这样,保存后我收到了成功警报,我的选项也被保存了。

注意:我只注意到一个特点。在完成 POST 请求并显示成功警报后,该页面会发出一个 GET 请求,请求您的选项页面的一个页面版本,该页面版本具有参数 &settings-updated =true 添加到 url 的末尾。

我不知道这是否值得担心,我没有遇到任何问题,但从长远来看可能是一个需要考虑的问题。

关于php - 使用 ajax 保存 wordpress 设置 api 选项,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com