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

我正在使用jQuery .load()方法将php文件加载到视图中的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从视图文件中加载此PHP的,因此我也无法在其中使用PHP lang函数,并且不得不使用回调变量从控制器一直发送这些静态本地化字符串,我发现这很不客气。

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

参考方案

像我的评论一样,将您的inner.php逻辑放入代码点火器控制器中,并使控制器回显您的视图文件,现在您只是点击了一个名为your_domain.com/inner.php的页面,而不是一个名为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)});
}

然后在您的控制器中:

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

您可能需要在ajax_method函数中对视图进行json_encode编码,因为您似乎想这样做,在这种情况下,如下所示:

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

jQuery Ajax加载仅适用于单个单词变量 - php

在我的PHP文件中,我将一些变量从输入框传递到链接中,该链接通过jQuery的ajax load函数在其URL中使用该变量加载页面。整个系统运行良好,但仅适用于单字变量。每当涉及到空格时,我的Ajax通话都会中断。我假设这是一个编码问题,但是我也有一些疑问。基本上,它归结为我的PHP文件中的这一行代码,这导致了混乱。是否有可能找出格式是否正确,或者为什么在多…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

jQuery Ajax和php类 - php

我正在尝试学习如何在php中使用oop。我对jQuery也很陌生。是否可以向php类方法发出Ajax请求?我只将Ajax请求发送到专门用于此目的的文件,并且返回我需要的数据。 参考方案 简短答案:不可以。长答案:Ajax只是一个使用JavaScript从浏览器发出HTTP请求而无需离开页面的术语。您唯一可以“呼叫”的是URL。您可以编写PHP以根据URL来执…