2014-03-04 33 views
8

我的代碼在Mac OS Lion上的Safari 6.1.2以上版本在其他瀏覽器上絕對正常。Safari瀏覽器截斷POST參數

下面是阿賈克斯後,我用 -

$.ajax({ 
    type: 'POST', 
    dataType: 'text/html', 
    url:"/MyProxy.php", 
    data:{"server":"mydomain.com", "user":"vijay", "passd":"[email protected]"}, 
    error: function(data) { 
     console.log(data); 
     alert("Failure - "+data); 
     return; 
    }, 
    success: function(data) { 
     console.log("Success - "+data); 
     parseInformation(data); 
    } 
}); 

而且調試的目的,我已經進入日誌上的控制檯登錄我的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()); 

在Safari它顯示像 -

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

serverAdd] => mydomain.com 
    [userName] => vijay 
    [passwd] => hig 
) 

任何猜測爲什麼只有Safari以這種方式行事,即使使用iPad/iPhone和其他O S用Safari作爲瀏覽器,我面臨這個截斷問題。我也讀過帖子,人們面臨這樣的問題,但是,在這些情況下,他們有非常大的要求,另一方面我的要求很小。

任何幫助?

+0

你可以給你的PHP代碼的結果與POST參數?你找到解決方案嗎?或問題來自何處?提前致謝! – jeerbl

+0

不幸的是,我無法找到解決方案。 PHP代碼如上所述,功能最少。 – VijayKumar

+0

這些是您使用此功能測試的準確值還是隻是一個示例。意思是正確的值可能在密碼中有特殊字符,導致截斷。 – Swippen

回答

2

我測試了您的代碼,並且您的請求的dataType: 'text/html'參數有問題。通常不需要指定它,jQuery足夠聰明,可以理解接收結果的格式。

卸下dataType參數反正我收到了預期的輸出結果:

this is the screenshot of Safari console

我也建議你使用像查爾斯https://www.charlesproxy.com代理查看由PHP腳本獲得的實際輸出,使你自己看着辦如果您在JavaScript或服務器端有問題,請退出。