php - 在 Ajax CodeIgniter 中出现错误 403 Forbidden
问题描述
这是我的模态视图
<div id="edit_numbers" class="modal">
<?php $attrs = array('id' => 'user_form'); ?>
<?= form_open_multipart('users/editnumber', $attrs) ?>
<div class="modal-content row">
<h4 class="modal-title">Add/Edit User Number</h4>
<div class="row">
<div class="col s12">
<p>
<input class="with-gap" name="method" type="radio" id="method_manual_input" value="manual" checked>
<label for="method_manual_input">Manual Input</label>
</p>
<input type="hidden" id="numberCount" name="numberCount" value="1">
<div id="numberForm" class="row">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<input type="hidden" id="username" name="username" value="">
<input type="hidden" id="user_id" name="id" value="">
<button type="submit" class=" modal-action waves-effect waves-green btn-flat">Submit</button>
<a href="#!" class=" modal-action modal-close waves-effect waves-green btn-flat">Cancel</a>
</div>
</form>
</div>
这是我的ajax
$("#edit_numbers").on('click', '.add-number', function() {
$('#numberCount').val( function(i, oldval) {
return ++oldval;
});
var x = $(this).attr('data-number-id');
console.log(x);
var user_id = $("#number_" + x).val();
var user_username = $("#edit_numbers #username").val();
console.log(user_id + " " + user_username);
// do AJAX
$.ajax({
url: base_url + "/number/add_number",
data: {
format: 'json',
id: user_id,
username: user_username
},
context: {
id: $("#number_" + x).val()
},
dataType: 'json',
error: function(err) {
alert('An error occurred. Please try again later.');
console.log(err);
},
success: function(data) {
// body...
console.log(data);
if (data.status == 0) {
alert(data.message);
} else {
var id = data.id;
var new_x = parseInt(x) + 1;
var inputGroupWrapper = numberAddBuilder(new_x, "");
$("#numberForm").append(inputGroupWrapper);
alert(data.message);
}
},
type: 'POST'
});
return false; });
这是我的控制器
public function add_number()
{
$json = array(
'status' => 1,
'message' => 'success',
);
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('id', 'Account', 'trim|required|xss_clean');
if (!$this->form_validation->run()) {
$json['status'] = 0;
$json['message'] = 'validation error';
} else {
$username = $this->input->post("username");
$id = $this->input->post("id");
$account_res = json_decode($this->number->add_number_to_user($username, $id, $this->session->userdata('logged_in')['token']), true);
if (!isset($account_res)) {
$json['status'] = -1;
$json['message'] = 'server error';
}
}
// set response
echo json_encode($json);
}
这是我的form_helper,有什么关系吗?
function form_open($action = '', $attributes = array(), $hidden = array())
{
$CI =& get_instance();
// If no action is provided then set to the current url
if ( ! $action)
{
$action = $CI->config->site_url($CI->uri->uri_string());
}
// If an action is not a full URL then turn it into one
elseif (strpos($action, '://') === FALSE)
{
$action = $CI->config->site_url($action);
}
$attributes = _attributes_to_string($attributes);
if (stripos($attributes, 'method=') === FALSE)
{
$attributes .= ' method="post"';
}
if (stripos($attributes, 'accept-charset=') === FALSE)
{
$attributes .= ' accept-charset="'.strtolower(config_item('charset')).'"';
}
$form = '<form action="'.$action.'"'.$attributes.">\n";
// Add CSRF field if enabled, but leave it out for GET requests and requests to external websites
if ($CI->config->item('csrf_protection') === TRUE && strpos($action, $CI->config->base_url()) !== FALSE && ! stripos($form, 'method="get"'))
{
$hidden[$CI->security->get_csrf_token_name()] = $CI->security->get_csrf_hash();
}
if (is_array($hidden))
{
foreach ($hidden as $name => $value)
{
$form .= '<input type="hidden" name="'.$name.'" value="'.html_escape($value).'" style="display:none;" />'."\n";
}
}
return $form;
}
这是我单击的视图和“+”按钮 当我单击“+”按钮时,我得到一个错误发生。请稍后再试。它说403禁止。我只是传递了 csrf 令牌,但什么也没发生。当成功时,我在提交数据后得到了新的错误,它说“遇到错误,您请求的操作是不允许的。” 并在 $..ajax 行中匿名。我不知道该怎么办。
解决方案
推荐阅读
- amazon-web-services - 应用程序负载均衡器会话 cookie 的过期时间非常长
- c# - 如何在 Unity 中移动和跳跃
- asp.net-mvc - linq-to-twitter Twitter 洪水获取
- django - 返回环境变量
- opengl - OpenGL在哪里处理顶点
- firebase - Firebase Cloud Firestore 请求
- android - 当我滚动浏览我的 webview 应用程序时,应用程序冻结
- c# - Office 365 EWS-GetUserAvailability ID 为空
- dotnetnuke - 安装 2sic_2SexyContent_10.25.02_Install.zip 时出错
- sql-server - 将行与sql server中同一表中的其他行进行比较