【发布时间】:2015-10-21 03:10:21
【问题描述】:
我正在为这个问题而烦恼: 我正在使用 JSONP 从一个域向另一个域发送一些数据,它在我的本地主机上工作得非常好,但在服务器上却不能工作。我在后端使用 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
有什么想法吗?提前致谢。
【问题讨论】:
-
两个位置的 jQuery 版本相同?
-
您确定
$info = json_decode(file_get_contents("php://input"));中的路径正确吗?我不知道任何php://input... -
php://input应该可以工作 - 我经常使用它。尝试改用dataType: 'json',看看是否有任何改变。$.ajax'jsonp' 的 api 说:“使用 JSONP 加载到 JSON 块中。在 URL 的末尾添加一个额外的“?callback =?”以指定回调。通过附加查询字符串参数禁用缓存,“_ =[TIMESTAMP]",除非缓存选项设置为 true。" -
无法使用
jsonp进行POST ....这就是为什么您的标题显示GET。如果您控制两个域,则可以在另一个域上启用 CORS 或使用您的服务器使用 cURL 进行发布 -
@psalmody 我必须使用 jsonp,因为 jquery 脚本和接收器位于不同的域中。如果我使用 GET 作为类型,这就是我转储
$_GET:/**/_xdc_._q58197 && _xdc_._q58197( [0,null,1] )
标签: php jquery ajax codeigniter jsonp