禁止ajax的刷新加载页面刷新,JQuery AJAX发布和刷新页面内容没有重新加载页面

注意:这个答案显示了关于AJAX过程的php后端的一些想法。这是关于前端过程的其他答案的补充。

1.-在WP中管理AJAX请求的模型,只是一些想法,好吗?

add_action('init', 'process_ajax_callback');

function process_ajax_callback()

{

if (! $_REQUEST['go_ajax'])

{

return;

}

try

{

if (isset($_REQUEST['nonce_my_ajax']))

{

$nonce = $_REQUEST['nonce_my_ajax'];

if (! wp_verify_nonce($nonce = $_REQUEST['nonce_my_ajax'], 'nonce_my_ajax'))

{

throw new Exception("Nonce token invalid."); // security

}

}

}

catch (Exception $e)

{

$output['result'] = false;

$output['message'] = $e->getMessage();

echo json_encode($output);

exit;

}

$result = true;

$message = '';

switch ($_REQUEST['action'])

{

case 'update_price':

try

{

// update price

// price value comes in $_REQUEST['price']

}

catch (Exception $e)

{

$result = false;

$message = $e->getMessage();

}

break;

case 'other_actions':

break;

}

$output['result'] = $result ? true : false;

$output['message'] = $message;

echo json_encode($output);

exit;

}

2:不要忘记安全

// nonce_my_ajax is passed to javascript like this:

wp_localize_script('my_js_admin', 'myJsVars', array(

'nonce_my_ajax' => wp_create_nonce('nonce_my_ajax')

));

一般3.-所需的前端(与后端样机上面显示使用的)是一样的东西:

$("select[name='ChangeCurrency']").live("change", function() {

var price = $(this).val();

$.post(

window.location.href,

{

go_ajax : 1, // parse ajax

action : 'update_price', // what to do

price : price, // vars to use in backend

nonce_my_ajax : myJsVars.nonce_my_ajax // security

},

function(output) {

if (output.result == true)

// update widgets or whatever

// $("#my_div").html("we happy, yabadabadoo!");

// or do nothing (AJAX action was successful)

else

alert(output.message)

}, 'json');

});

4.-您可以使用$.get()或$.post()向服务器发送/处理数据,但​​在更新数据库时不好,因为您无法管理返回的消息o f故障,其响应的精度为json(例如:倍数验证错误消息)。只需使用​​即可加载HTML视图。

UPDATE:

设置session_id()其中既可用于正常请求和AJAX请求,在早期阶段尽可能被执行。我希望您使用的是类来包装你的插件,如果不是现在是合适的时机做...例如:

class my_plugin {

function __construct()

{

if (! session_id())

{

session_start();

}

add_action('init', array($this, 'process_ajax_callback'));

// ...

}

function process_ajax_callback()

{

// ...

}

}

更新2:

关于基于现时安全:

WordPress中提供的安全功能是“随机数”。通常,“随机数”是一种令牌,只能使用一次,并且经常用于防止未经授权的人员代表另一个 人员提交数据。

在此样机nonce_my_ajax仅仅是一个例子,实际上它应该是更独特的像nonce_{my_plugin_name},甚至更好nonce_{my_plugin_name}_{what_action}其中what_action代表updating user,或inserting new book等..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值