Php 为什么通过AJAX发送url会抛出403错误?
我正试图通过ajax保存社交媒体url。这是表格的一部分:Php 为什么通过AJAX发送url会抛出403错误?,php,jquery,ajax,codeigniter-3,Php,Jquery,Ajax,Codeigniter 3,我正试图通过ajax保存社交媒体url。这是表格的一部分: <div class="row"> <div class="col-sm-4"> <label form="campana_fb">Facebook</label> <input type="text" id="campana_fb" name="campana_fb" class="form-control"> </div
<div class="row">
<div class="col-sm-4">
<label form="campana_fb">Facebook</label>
<input type="text" id="campana_fb" name="campana_fb" class="form-control">
</div>
<div class="col-sm-4">
<label form="campana_tw">Twitter</label>
<input type="text" id="campana_tw" name="campana_tw" class="form-control">
</div>
<div class="col-sm-4">
<label form="campana_in">Instagram</label>
<input type="text" id="campana_in" name="campana_in" class="form-control">
</div>
</div>
正如您所看到的,我尝试使用encodeURI
但仍然不起作用,只有在输入URL时,我才获得请求方法:POST Status code:403 probled
,否则数据保存成功
我在构造函数中添加了标题
class Campana extends CI_Controller
{
public function __construct()
{
parent::__construct();
...
header('Access-Control-Allow-Origin: *');
header('Access-Control-Expose-Headers: Access-Control-Allow-Origin');
}
仅当我在输入和生产中输入URL时,禁止状态才会发生,在本地,我没有任何问题。Hi-Laviku将encodeURI替换为encodeURI组件 参考: 很抱歉,我无法评论没有足够的分数:) 虽然这并不能回答为什么encodeURI不工作的问题,但您是否尝试过像这样序列化表单:
var form = $("#formulario");
$.ajax({
type : "POST",
url : form.attr('action'),
dataType : 'json',
data : form.serialize() + "&campana_descripcion=" + campana_descripcion,
success : function(respuesta){
$.unblockUI();
if(respuesta.estado){
alerta(respuesta.mensaje, 'success');
CKEDITOR.instances.campana_descripcion.setData("");
}
else{
alerta(respuesta.mensaje, 'error');
}
},
error: function(error){
$.unblockUI();
alerta(error.responseText, 'error');
}
});
在ajax中,您提到的数据类型是json,但这里只传递值,所以将其删除
$.ajax({
type : "POST",
url : $("#formulario").attr('action'),
data : {
campana_descripcion: campana_descripcion,
campana_nombre: $("#campana_nombre").val(),
camapana_meta: $("#camapana_meta").val(),
campana_id: $("#campana_id").val(),
cuenta_1: $("#cuenta_1").val(),
banco_1: $("#banco_1").val(),
cuenta_2: $("#cuenta_2").val(),
banco_2: $("#banco_2").val(),
campana_fb: encodeURI($("#campana_fb").val()),
campana_tw: encodeURI($("#campana_tw").val()),
campana_in: encodeURI($("#campana_in").val()),
},
success : function(respuesta){
$.unblockUI();
if(respuesta.estado){
alerta(respuesta.mensaje, 'success');
CKEDITOR.instances.campana_descripcion.setData("");
}
else{
alerta(respuesta.mensaje, 'error');
}
},
error: function(error){
$.unblockUI();
alerta(error.responseText, 'error');
}
});
尝试使用
url:$(“#formulario”).prop('action'),
@JohnR。问题不在于表单url(action),而在于我要发送的输入值
此输入包含类似https://twitter.com/CinematecaNic
不需要编码url campana\u fb:encodeURI(),只是作为普通文本值发送?@Gopal我之前已经尝试过了,但是我仍然会得到状态码:403禁止@laviku你能读一下这篇文章的评论吗?您是否安装了FireBug或任何其他调试工具?您是否可以评论或添加帖子内容?控制台中也有错误吗?我没有得到任何错误,这只发生在生产环境中。或者你不能只使用序列化吗?哦,对了,你在用什么Web服务器NGINX?我试过serialize,没有机会。。我正在使用ApacherRunning out of ideas,您有权访问Apache日志吗?
$.ajax({
type : "POST",
url : $("#formulario").attr('action'),
data : {
campana_descripcion: campana_descripcion,
campana_nombre: $("#campana_nombre").val(),
camapana_meta: $("#camapana_meta").val(),
campana_id: $("#campana_id").val(),
cuenta_1: $("#cuenta_1").val(),
banco_1: $("#banco_1").val(),
cuenta_2: $("#cuenta_2").val(),
banco_2: $("#banco_2").val(),
campana_fb: encodeURI($("#campana_fb").val()),
campana_tw: encodeURI($("#campana_tw").val()),
campana_in: encodeURI($("#campana_in").val()),
},
success : function(respuesta){
$.unblockUI();
if(respuesta.estado){
alerta(respuesta.mensaje, 'success');
CKEDITOR.instances.campana_descripcion.setData("");
}
else{
alerta(respuesta.mensaje, 'error');
}
},
error: function(error){
$.unblockUI();
alerta(error.responseText, 'error');
}
});