我在使用codeigniter uri语言标识符和form_validation时遇到问题。
当我将$ config [' lang_ignore']设置为FALSE时,问题是form_validation停止工作。 我在一个干净的codeigniter安装和设置uri语言标识符中进行了测试,如codeigniter的wiki中所述。
这是我的控制器应用程序/ controllers / form_validation_test.php:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Form_validation_test extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('form_validation_test_view');
}
//Get Ajax POST:
public function getPost()
{
$result = FALSE;
$data = NULL;
$this->load->library('form_validation');
$this->form_validation->set_rules('user','User','required');
$result = $this->form_validation->run();
$response = array(
'result' => $result
);
$this->output->set_content_type('application/json')
->set_output(json_encode($response));
}
}
查看application / views / form_validation_view.php:
<script src="http://ci_test.localhost/js/jquery-1.8.2.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://ci_test.localhost/js/ci_test.js"></script>
<form name="formulario" id="formulario" action="http://ci_test.localhost/form_validation_test/getPost">
<input type="text" id="user" name="user" value="">
</form>
<input type="button" id="btnSubmit" value="submit">
<div id="result"></div>
和Javascript文件js / ci_test.js:
jQuery(document).ready(function(){
jQuery('#btnSubmit').click(function(){
var postData = jQuery('#formulario').serialize();
var targetUrl = jQuery('#formulario').attr('action');
jQuery.ajax({
url: targetUrl,
data: postData,
type: 'post',
dataType: 'json',
success: function (data, textStatus, jqXHR) {
res = data.result ? 'TRUE':'FALSE';
jQuery('#result').html(res);
}
});
});
});
因为你可以看到我通过ajax请求发送帖子,只需获得结果并将其放在div中。如果你设置了lang_ignore&#39;为TRUE它有效,但如果你把它设置为FALSE则不行。
我观察到的另一个行为是,当everythig工作正常时,你会在firebug中看到POST请求,但是当使用lang_ignore为FALSE时,你可以看到POST请求和一个仍在加载的GET请求。我不知道为什么会这样,但也许可以帮助别人找到问题。
任何帮助将不胜感激。 谢谢大家的时间。
答案 0 :(得分:0)
我找到了解决方案。
如果将lang_ignore参数设置为FALSE,则application / core / MY_lang.php文件中的构造函数会执行一次重定向,并且(如果我错了,请更正)您将丢失POST。
因此,包括语言段在一个请求中直接进行。
http://ci_test.localhost/en/form_validation_test/getPost
它对我有用,希望可以帮助别人