2014-09-02 89 views
0

我正在由一个jQuery AJAX函数调用下面的PHP笨功能代码:刷新页面ajax的click事件之后笨

  $this->load->library('session'); 
      $this->load->helper('url'); 

       $ids = $_POST['i']; 
       $message = $_POST['m']; 
       var_dump($message); 
       var_dump($ids); 
       $sql = 'update replies set `response` = "'.$message.'" where id IN ('.implode(',', $ids).')'; 
       echo $sql; 
       R::exec($sql); // works normally to here 


       redirect($this->uri->uri_string()); 

我想“消息的DB插入后刷新页面”。但似乎没有发生。一切正常,包括数据库插入。我究竟做错了什么?

+1

AJAX调用服务器上的资源,服务器处理响应并触发重定向,AJAX不关心,除非你告诉它。如果你想这样做,你应该从PHP返回URL并使用AJAX成功回调来重定向Javascript。或者在没有AJAX的情况下正常发布到PHP,并让PHP执行重定向。 – 2014-09-02 21:58:16

+0

感谢Scrowler,“如果你想这样做,你应该从PHP返回URL并使用AJAX成功回调来重定向Javascript。”我对jquery/js不太了解。你能否进一步解释如何做到这一点? – user61629 2014-09-03 02:09:59

+1

以下面的例子,但是将“url”作为参数放入回调函数中:'function(url){}',然后'location.href = url;',然后在PHP中,您只需'echo'http: //myurl.com';'。最后,一旦你已经完成了所有这些工作,用JS进行更多的错误检查,以确保你恢复了你的预期。 – 2014-09-03 02:34:17

回答

1

您无法通过AJAX网址进行重定向。重定向可以使用回调函数在 三种方式完成,失败并始终。

例子:

$.ajax({ 
     url: '/path/to/file', 
     type: 'default GET (Other values: POST)', 
     dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)', 
     data: {param1: 'value1'}, 
    }) 
    .done(function(url) { // echo url in "/path/to/file" url 
     // redirecting here if done 
     location.href = url; 
    }) 
    .fail(function(url) { // echo url in "/path/to/file" url 
     // redirecting here if failed 
     location.href = url; 
    }) 
    .always(function(url) { // echo url in "/path/to/file" url 
     // redirecting here always 
     location.href = url; 
    }); 
+0

我相信如果用户想要使用重定向功能,位置所需的值将在响应头(而不是主体)中。使用重定向进行响应可能会有一些优势。 – jacob 2014-09-03 03:31:28

0

在你的Ajax的成功显示出成功的消息

window.location="path_to redirect"; 

像例子中,我重定向到成员控制器

window.location="member"; 

希望这有助于以后使用。