1

仅在 Safari中,为什么$_POST使用 jQuery AJAX 调用发布时数组为空?

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

4 回答 4

0

尝试删除(and )in data

于 2013-04-19T15:44:43.147 回答
0

该问题可能与 iOS 6 缓存某些发布请求有关。看看这篇文章:ios缓存发布请求响应

您可以通过检查是否没有使用 Cache-Control 标头或“Cache-Control: max-age=0”并删除它们来测试这一点。

于 2013-04-19T16:40:20.037 回答
0

首先,您将数据类型设置为 xml 我猜这应该是 html,因为您没有将 xml 作为响应。见:http ://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests

引用:“为什么数据是括号中的对象?”

如果 Markroper 是正确的,也可以在你的请求中使用 async : true 。

 $(document).ready(
        function()
        {
            $.ajax(
            {
                type: "POST",
                url: "target.php",
                async :true,
                dataType: "html",
                data: {
                    'param1': 'param1'
                },
                success: function(data) {
            alert(String(data));
            }
            });
        });

只是将成功更改为:成功:函数(数据){alert(字符串(数据));}编辑:在http://peervantienen.com/Stackoverflow/in-safari-why-is-the-post-array-empty -after-jquery-ajax-call/它在所有浏览器中给了我相同的结果。

于 2013-04-22T08:18:52.030 回答
0

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

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

希望这对其他人有帮助...

于 2013-05-03T15:54:54.340 回答