我试图通过ajax post方法提交一个用户表单,点击按钮,点击js,点击绑定。我收到的错误是403 -禁止的。
我确信这与中央应急基金有关,但无法解决。
View.php:
<?php echo form_open('client/search_client_database', ['role' => 'form']); ?>
<fieldset>
<div class="form-group">
<label class="sr-only" for="search_client_input">Search for existing clients</label>
<div class="input-group">
<input class="form-control input-sm" type="text" id="search_client_input" name="search_client_input" placeholder="Search for existing clients...">
<span class="input-group-btn">
<button class="btn btn-primary btn-sm" type="button" data-bind="click: search_client">Search</button>
</span>
</div>
</div>
</fieldset>
<?php echo form_close(); ?>在单击按钮时,触发敲除Js单击绑定以启动对控制器的ajax调用。剔除js代码位于一个单独的js文件中,该文件与视图一起加载。
Client.js文件:
var base_url = window.location.origin;
var url = base_url+"/client/";
this.search_client = function()
{
crsf = $("input[name=csrf_test_name]").val();
dataString = $("#search_client_input").val();
alert(crsf);
$.ajax({
url: url+"search_client_database",
type: "post",
cache: false,
data: {crsf: crsf, data: dataString},
success: function(customer_details) {
alert(customer_details);
},
error: function(xhr, ajaxOptions, thrownError)
{
alert(xhr.status);
alert(thrownError);
}
});
}主计长:
public function search_client_database()
{
$data = $this->input->post('data');
echo $data;
}我一直收到xhr错误403,也就是禁止的。URL中没有任何错误。
发布于 2016-03-30 12:27:29
您必须以在$config['csrf_token_name']中配置的相同名称返回csrf令牌。
在您的例子中,基于您的代码,它被称为csrf_test_name,因此您需要在Ajax请求中的data中使用它:
$.ajax({
url: url + "search_client_database",
type: "post",
cache: false,
data: {
"csrf_token_name": crsf,
data: dataString
},
success: function(customer_details) {
alert(customer_details);
},
error: function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});https://stackoverflow.com/questions/36303278
复制相似问题