在PHP中检索JSONP不起作用

在PHP中检索JSONP不起作用,php,jquery,ajax,codeigniter,jsonp,Php,Jquery,Ajax,Codeigniter,Jsonp,我对这个问题感到非常恼火: 我使用JSONP将一些数据从一个表单发送到另一个域,它在我的本地主机上运行得非常好,但在服务器上不起作用。我使用CodeIgniter2.X作为后端。 下面是一些代码: var telefono = $('#telefono').val(); var email = $('#email').val(); var mensaje = $('#mensaje').val(); $.ajax({ ur

我对这个问题感到非常恼火: 我使用JSONP将一些数据从一个表单发送到另一个域,它在我的本地主机上运行得非常好,但在服务器上不起作用。我使用CodeIgniter2.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);
这就是我检索数据的方式,它在我的本地主机上就像一个符咒。但是我在这个服务器上得到空值。我还尝试转储$u POST数组,但没有任何结果

这就是我在转储$\u 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

有什么想法吗?提前感谢。

使用
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

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

两个位置上的jQuery版本相同?您确定
$info=json\u decode(file\u get\u contents(“php://input"));是否正确?我不知道有什么
php://input
php://input
应该有效-我经常使用它。尝试改用
数据类型:“json”
,看看这是否会改变什么
$.ajax
jsonp的api说:“使用jsonp加载一个JSON块。在URL的末尾添加一个额外的”?callback=?“来指定回调。除非缓存选项设置为true,否则通过向URL附加一个查询字符串参数“=[TIMESTAMP]”来禁用缓存。”无法使用
jsonp
…这就是为什么标题显示
GET
。如果您同时控制这两个域,则可以在另一个域上启用CORS,或使用服务器进行postcURL@psalmody我必须使用jsonp,因为jquery脚本和接收方位于不同的域中。如果我使用GET作为类型,这就是我在两个位置上转储jQuery的相同版本时得到的结果:
/**/\uxdc.\uq58197&&&uxdc.\uq58197([0,null,1])
是否确定
$info=json.\u decode(file\u GET\u contents()php://input"));是否正确?我不知道有什么
php://input
php://input
应该有效-我经常使用它。尝试改用
数据类型:“json”
,看看这是否会改变什么
$.ajax
jsonp的api说:“使用jsonp加载一个JSON块。在URL的末尾添加一个额外的”?callback=?“来指定回调。除非缓存选项设置为true,否则通过向URL附加一个查询字符串参数“=[TIMESTAMP]”来禁用缓存。”无法使用
jsonp
…这就是为什么标题显示
GET
。如果您同时控制这两个域,则可以在另一个域上启用CORS,或使用服务器进行postcURL@psalmody我必须使用jsonp,因为jquery脚本和接收方位于不同的域中。如果我使用GET作为类型,这就是我得到的转储
$\u GET
/**/\u xdc.\u q58197&&&u xdc.\u q58197([0,null,1])
是的,这是逻辑方法。不幸的是,我的代码或服务器出现了一些非常奇怪的情况。这就是为什么我必须使用
CORS
。谢谢你的回复。是的,这是合乎逻辑的方式。不幸的是,我的代码或服务器出现了一些非常奇怪的情况。这就是为什么我必须使用
CORS
。谢谢你的回复。