Safari浏览器截断POST参数

Vij*_*mar 8 javascript php safari ajax

我的代码在Mac OS Lion上的Safari 6.1.2以外的其他浏览器上运行得非常好.

以下是我使用的ajax帖子 -

$.ajax({
     type: 'POST',
     dataType: 'text/html',
     url:"/MyProxy.php",
     data:{"server":"mydomain.com", "user":"vijay", "passd":"highly@secret"},
     error: function(data) {
         console.log(data);
         alert("Failure - "+data);
         return;
     },
     success: function(data) {
         console.log("Success - "+data);
         parseInformation(data);
     }
 });
Run Code Online (Sandbox Code Playgroud)

同样出于调试目的,我在PHP服务器代码上输入了日志

header('cache-control: no-cache');

function getRealPOST() {
    $pairs = explode("&", file_get_contents("php://input"));
    $vars = array();
    foreach ($pairs as $pair) {
        $nv = explode("=", $pair);
        $name = urldecode($nv[0]);
        $value = urldecode($nv[1]);
        $vars[$name] = $value;
    }                   
    return $vars;
} 

echo "-------";         
var_dump($_POST);           
echo "-------";             

print_r(getRealPOST()); 
Run Code Online (Sandbox Code Playgroud)

在Safari上的控制台日志中显示如下内容:

-------array(2) {
  ["userName"]=>
  string(5) "vijay"
  ["passwd"]=>
  string(4) "hig"
}
-------Array
(
    [

serverAdd] => mydomain.com
    [userName] => vijay
    [passwd] => hig
)
Run Code Online (Sandbox Code Playgroud)

任何猜测为什么只有Safari以这种方式表现,即使使用iPad/iPhone和其他操作系统用作浏览器的操作系统,我也面临着这种截断问题.我也读过人们面临这些问题的帖子,然而,在那些情况下,他们有非常大的要求,另一方面我的只是一个小要求.

有帮助吗?

Igo*_* Om 2

dataType: 'text/html'我测试了您的代码,并且您的请求参数存在问题。通常不需要指定它,jQuery 足够聪明,可以理解接收结果的格式。

无论如何删除dataType参数我收到了所需的输出:

这是 Safari 控制台的屏幕截图

我还建议您使用像 Charles https://www.charlesproxy.com这样的代理来查看 PHP 脚本获得的真实输出,以便您可以确定 JavaScript 或服务器端是否有问题。