在Safari中,为什么在jQuery AJAX调用之后$ _POST数组为空?

时间:2013-04-19 15:34:43

标签: php javascript jquery ajax safari

仅限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
(
)

4 个答案:

答案 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)

我的一位同事找到了答案:

http://forums.iis.net/post/1999417.aspx

希望这有助于其他人...