【问题标题】:Refreshing a page with codeigniter after ajax click eventajax点击事件后使用codeigniter刷新页面
【发布时间】:2014-09-02 21:27:11
【问题描述】:

我有以下由 jquery ajax 函数调用的 php codeigniter 函数代码:

            $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());

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

【问题讨论】:

  • AJAX 调用服务器上的资源,服务器处理响应并触发重定向,除非您告诉它,否则 AJAX 不关心这一点。如果您想这样做,您应该从 PHP 返回 URL 并使用 AJAX 成功回调通过 Javascript 重定向。或者只是在没有 AJAX 的情况下正常发布到 PHP 并让 PHP 进行重定向。
  • 感谢 Scrowler,“如果你想这样做,你应该从 PHP 中返回 URL 并使用 AJAX 成功回调通过 Javascript 重定向。”我对 jquery/js 不是很了解。你能进一步解释一下如何做到这一点吗?
  • 以下面的例子为例,但是将“url”作为参数放入回调函数中:function(url){},然后是location.href = url;,然后在PHP中你将只是echo 'http://myurl.com';。最后,一旦你完成了所有这些工作,用 JS 做更多的错误检查,以确保你得到了你期望的结果。

标签: php jquery ajax codeigniter


【解决方案1】:

您不能通过 AJAX url 重定向。可以使用回调函数重定向 三种方式完成,失败和总是。

例子:

$.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;
    });

【讨论】:

  • 我相信如果用户想要使用重定向功能,位置所需的值将在响应头(而不是正文)中。使用重定向进行响应可能有一些优势。
【解决方案2】:

在显示成功消息后使用 ajax 成功

window.location="path_to redirect";

例如,我正在重定向到成员控制器

window.location="member";

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多