在PHP中检索JSONP无法正常工作

时间:2015-07-29 22:30:28

标签: php jquery ajax codeigniter jsonp

我正在解决这个问题: 我正在使用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

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

1 个答案:

答案 0 :(得分:0)

POSTjsonp一起使用是一个矛盾。如您所见,正在使用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