仅限Safari ,为什么使用jQuery AJAX调用发布时$_POST
数组为空?
IE,Firefox和Chrome都正确输出。
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(
function()
{
$.ajax(
{
type: "POST",
url: "target.php",
dataType: "xml",
data: ({
'param1': 'param1'
}),
success: function()
{
}
});
});
</script>
<title></title>
</head>
<body>
</body>
</html>
文件target.php
包含以下代码:
<?php print_r($_POST); ?>
并输出以下内容:
Array
(
)
答案 0 :(得分:0)
尝试删除(
中的)
和data
。
答案 1 :(得分:0)
问题可能与iOS 6缓存某些帖子请求有关。看看这篇文章:ios caching post request responses。
您可以通过检查您是否使用没有Cache-Control标头或“Cache-Control:max-age = 0”并将其删除来测试。
答案 2 :(得分:0)
首先,您将数据类型设置为xml我想这应该是html,因为您没有将xml作为响应。见:http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests
引用:“为什么数据是括号中的对象?”
如果Mark roper正确,也会在您的请求中使用async:true。
$(document).ready(
function()
{
$.ajax(
{
type: "POST",
url: "target.php",
async :true,
dataType: "html",
data: {
'param1': 'param1'
},
success: function(data) {
alert(String(data));
}
});
});
刚刚将成功改为: success:function(data){alert(String(data));} 编辑:在http://peervantienen.com/Stackoverflow/in-safari-why-is-the-post-array-empty-after-jquery-ajax-call/上,它在所有浏览器中都给出了相同的结果。
答案 3 :(得分:0)