我正在解决这个问题: 我正在使用JSONP将表单中的一些数据从一个域发送到另一个域,它在我的localhost上工作得非常好,但它只是在服务器上运行。我正在使用CodeIgniter 2.X作为后端。 这是一些代码:
var telefono = $('#telefono').val();
var email = $('#email').val();
var mensaje = $('#mensaje').val();
$.ajax({
url: 'http://www.example.com/site/admin/index.php/controller/save',
type: 'POST',
dataType: 'jsonp',
data: JSON.stringify({nombre:nombre,telefono:telefono,email:email,mensaje:mensaje,idPropiedad:46}),
cache: false,
processData: false,
crossDomain: true
})
在CodeIgniter上:
$info = json_decode(file_get_contents("php://input"));
var_dump($info);
这就是我检索数据的方式,它就像我本地主机上的魅力一样。但我在这台服务器上得到NULL。我也试过转储$ _POST数组,没有。
这是我转储$ _GET数组的原因:
array(3) {
["callback"]=>
string(42) "jQuery1111037374000856652856_1438207931357"
["{\"nombre\":\"fasf\",\"telefono\":\"asfasfasfas\",\"email\":\"asfasfas\",\"mensaje\":\"fasfasfa\",\"idPropiedad\":46}"]=>
string(0) ""
["_"]=>
string(13) "1438207931360"
}
我也尝试从前端发送带有FormData()的数据,没有。
这就是发送内容:
Request URL:http://www.example.cl/site/admin/index.php/controller/save?callback=jQuery1111037374000856652856_1438207931357&{%22nombre%22:%22fasf%22,%22telefono%22:%22asfasfasfas%22,%22email%22:%22asfasfas%22,%22mensaje%22:%22fasfasfa%22,%22idPropiedad%22:46}&_=1438207931359
Request Method:GET
Status Code:200 OK
有什么想法吗?提前谢谢。
答案 0 :(得分:0)
将POST
与jsonp
一起使用是一个矛盾。如您所见,正在使用GET
。您的其他数据不可用(至少很难访问)因为您对其进行了字符串化。如果您只是传递未经过分类的对象,jQuery会将您的对象转换为URL中的键/值对。
var telefono = $('#telefono').val();
var email = $('#email').val();
var mensaje = $('#mensaje').val();
$.ajax({
url: 'http://www.example.com/site/admin/index.php/controller/save',
dataType: 'jsonp',
data: {
nombre: nombre,
telefono: telefono,
email: email,
mensaje: mensaje,
idPropiedad: 46
}
});
然后,您可以通过以下方式访问数据:
$nombre = $_GET['nombre'];
$telefono = $_GET['telefono'];
... etc