php - 无法访问 jQuery 加载的 PHP 中的 CodeIgniter 方法

标签 php jquery codeigniter

我正在使用 jQuery .load() 方法将 php 文件加载到我 View 内的 div 中。这是因为在页面上的某些操作中,我不希望刷新整个页面,而只希望单个 div 更改其内容。

//view file

function loadCallback(a) 
{
  $('#div').load("/inner.php", {json: JSON.stringify(a)});
}

function load() 
{
  $.post('/controller/method', {}, loadCallback, 'json');
}

加载的 php 文件会进行一些服务器端处理。一切都工作正常,直到我需要本地化该文件,为此我在整个代码中使用了 CodeIgniter 语言助手。 lang() 方法在这个动态加载的 PHP 中不起作用,尽管它在其他地方都可以工作。看来这个 PHP 没有 CodeIgniter 框架的上下文。即使 getinstance() 也无法在文件内部工作。我猜测动态加载的 PHP 端没有解决此问题的方法。

//inner view (inner.php)
$stringValue = lang('key');

//PHP Fatal error:  Call to undefined function lang() in inner.php

由于我通过 javascript 从 View 文件加载此 PHP,因此我也无法在那里使用 PHP lang 函数,并且必须使用我发现的回调变量从 Controller 一路发送这些静态本地化字符串相当老套。

有没有更好的方法来解决这个问题?

最佳答案

就像我的评论一样,将您的inner.php逻辑放入代码点火器 Controller 中,并让 Controller 回显您的 View 文件,现在您只是点击一个名为your_domain.com/inner.php的页面,而不是 View 文件名为inner.php

所以代替:

function loadCallback(a) 
{
  $('#div').load("/inner.php", {json: JSON.stringify(a)});
}

做类似的事情:

function loadCallback(a) 
{
  $('#div').load("/controller/ajax_method", {json: JSON.stringify(a)});
}

然后在你的 Controller 内:

function ajax_method(){
    //some logic....
    $this->load->view('inner', $data);
}

您可能需要在 ajax_method 函数中对 View 进行 json_encode,因为您似乎想要这样做,在这种情况下,类似于:

function ajax_method(){
    //some logic
    $json['json'] = $this->load->view('inner', $data, true)
    echo json_encode($json);
}

关于php - 无法访问 jQuery 加载的 PHP 中的 CodeIgniter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22536741/

相关文章:

javascript - 将数据从 PHP 移至 HTML,然后移至 jQuery,最后移回 PHP

javascript - 使用单独的链接显示/隐藏占据相同空间的 div

javascript - 使用 jQuery 在悬停时向下移动图标

php - 在codeigniter中以文本格式导入excel文件

codeigniter - 使用 codeigniter 插入数据库

php - 框架助手,它们有什么用?

没有 Composer 的 PHPMailer 安装

javascript - Google 日历图表点击日期并重定向页面(URL 中包含日期)

php - 使用php从文本文件中删除文本

javascript - jQuery 每个函数都不能正常工作