2017-06-20 76 views
0

美好的一天!ajax请求和PHP函数后刷新页面

尝试在使用ajax和php函数(对db)提交值之后刷新页面。试图通过ajax请求成功的方法,但它似乎没有工作。

的JavaScript

function saveQuestionnaire() { 
    /* some code */ 

    $.ajax({ 
     type: "POST", 
     url: "createquestionnaire.php", 
     data: {toDbQuestionnaire: toDbJson}, 
     success: function(data){ 
      window.location.reload(); 
     } 
    }); 
} 

createquestionnaire.php

require("functions.php"); 

$obj = $_POST['toDbQuestionnaire']; 
$obj = json_decode($obj); 

if (isset($obj) && isset($obj->name) && $_SESSION['email']) { 
    $Question->createQuestionnaireWithNameAndEmail($obj->name, $_SESSION['email'], $obj->quiz); 
    header('Content-Type: application/json'); 
    echo json_encode("{result: true}"); 
} 

后,下面的函数经过适当的和值推至DB。虽然,要查看页面上的更改,我需要刷新页面。我如何实现这一目标?正如你所看到的,window.location.reload()没有完全奏效。

---- ----编辑

显然,这就像一个魅力。为什么我会收到错误?

error: function(data){ 
       window.location.reload(); 
      } 
+5

你为什么使用AJAX,当你需要刷新页面。 – Webinion

+1

您是否尝试在重定向之前添加'console.log('pass')'?查看您的成功功能是否触发。 – Zenoo

+0

在控制台中打印您的错误 –

回答

1
success: function(data){ 
    if(data.success == true){ // if true (1) 
     setTimeout(function(){// wait for 5 secs(2) 
      location.reload(); // then reload the page.(3) 
     }, 1000); 
    } 
} 

使用这种中签部分

1

你可以改变你createquestionnaire.php文件中像这样,

require("functions.php"); 

    $obj = $_POST['toDbQuestionnaire']; 
    $obj = json_decode($obj); 

    if (isset($obj) && isset($obj->name) && $_SESSION['email']) { 
     $Question->createQuestionnaireWithNameAndEmail($obj->name, $_SESSION['email'], $obj->quiz); 
     header('Content-Type: application/json'); 
     $result = array('result'=>true); 
     echo json_encode($result); 
    }else{ 
     $result = array('result'=>false); 
     echo json_encode($result); 
} 
0

真的对不起大家。错误的原因是这部分中createquestionnaire.php:

ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 
0

使用location.reload而不是window.location.reload在成功