【问题标题】:AJAX Call not showing original page or refreshing itAJAX 调用不显示原始页面或刷新它
【发布时间】:2013-11-26 06:28:50
【问题描述】:

好的,所以我试图通过一个运行良好的插件在 Wordpress 中传递 AJAX 调用,但是在将数据传递给下面的函数后,下面的这个 Javascript 不会返回到原始页面。我错过了什么?

// JavaScript Document
jQuery(document).ready(function($) {
// We'll pass this variable to the PHP function outofoffice_ajax_request
id_numbers = new Array();
// This does the ajax request
$.ajax({
    type: "get",        
    url: myAjax.ajaxurl,
    dataType : "json",
    data: {         
        action:"outofoffice_ajax_request",
        outofoffice_value : outofoffice_value,
        aid : aid
    },
    success:function(response){
        // This outputs the result of the ajax request
        id_numbers = response;
        $("#outofoffice").html(response);   
                    window.location.reload(true);
    }       
    .error(function() {
alert("Your out of office settings could not be updated.");
})      
})
});

返回“值已设置!”从这个函数;

function outofoffice_ajax_request() {
// The $_REQUEST contains all the data sent via ajax
if ( isset($_REQUEST['outofoffice_value']) ) {
    $outofoffice = $_REQUEST['outofoffice_value'];
    $aid = $_REQUEST['aid'];
    if($_REQUEST['outofoffice_value']=='true'){
    update_user_meta($aid, 'si_office_status', 'false');  
    }
    else{
    update_user_meta($aid, 'si_office_status', 'true');     
    }
    echo "value is set!";
    die();
} 
die();   
}

【问题讨论】:

  • 不太清楚“但是下面的这个 Javascript 不会回到原始页面”是什么意思
  • 同意@Ramesh。 Ajax 不应该重定向或转到另一个页面 - 它是出于完全相反的原因创建的 - 保持在当前页面而不刷新等。
  • 啊,是的,我其实不希望它离开原来的页面! :) 也许这是一个 wordpress 的东西......但我正在尝试点击一个链接来更新用户的元数据,而无需离开页面......

标签: javascript jquery ajax wordpress refresh


【解决方案1】:

其实没必要做

 if(response.type == "success"){

block,因为这已经由到达的成功回调确定,如果发生错误,它将不会到达该块并像您希望的那样进入您的 if 语句,相反,您应该同时拥有一个成功回调和像这样的错误回调:

success: function(data) {
    // Your success here
},
error: function() {
    // Your error handler here
}

这可能就是您遇到麻烦的原因。

【讨论】:

  • 哇,感谢您如此迅速的响应...好的,所以我尝试按照以下更新我的代码并重新测试,结果相同,页面加载“值已设置!”并停留在成功页面 URL:wp-admin/admin-ajax.php?action=outofoffice_ajax_request&outofoffice_value=true&aid=19&nonce=52477e05c4
  • AJAX 请求在完成后不会加载页面,除非您告诉它这样做。 AJAX 背后的想法是您将新数据发回,然后将其与您的 JS 一起包含在页面中。您可能只需要使用以下命令告诉页面重新加载:document.location = document.location.href;
  • 好的,但我尝试添加 window.location.reload(true);在成功函数中并没有变化.... mmmm
  • 也许我需要通过 Javascript 在浏览器中加载链接,而不是通过传统的硬链接到 wp-admin/admin-ajax.php... url?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 1970-01-01
相关资源
最近更新 更多