簡體   English   中英

帶有jquery.form.js的ie8和ie9返回html而不是從PHP返回數據

[英]ie8 and ie9 with jquery.form.js returns html instead of data echo from PHP

我要完成的事情是通過<input type="file"...選擇我的圖像文件<input type="file"...使用php腳本對其進行處理,調整圖像的大小,並作為字符串的結果返回圖像回顯的base64值。的PHP腳本。 我已經使用Firefox,Chrome和Internet Explorer 10完成了它。

我正在使用jquery.form.js在ie8和ie9中完成相同的行為,以對php腳本進行ajax調用並返回數據。 事實是,在此瀏覽器中,Internet Explorer 8-9返回一個html(從控制台查看)的html,就好像該頁面將要重新加載一樣(就像通常的php調用在ie8-9中一樣)。 我要注意的是,無論php做什么,它總是返回html,即使它很簡單:

<?php
   echo "Hello World";
?>

這是我的劇本

的HTML

<form id="uploadForm" action="%MYURL%" method="post">
        <input name="userImage" type="file" class="inputFile" id="inputFileID" size="43"  style="margin-right: 45px" />
        <input type="submit" id="save-data-image" unselectable="on" data-corner="tr bl 5px" rel="save" class="button tiny blue left" value="Save">
</form>

JAVASCRIPT

$('#uploadForm').ajaxForm(function(data) { 
      console.log("data:" + data);
}); 

因此,目標是在IE8-9中返回“ Hello World”字符串。 我希望有人能幫幫忙。 提前致謝。

我不知道ajaxForm的內部工作如何完成,但是我猜想它使用iframe來發布數據並在iframe加載時讀回iframe。 IE將通過創建“缺少”的<html>和<body>元素來強制返回的字符串為HTML。 您應該通過將Content-Type HTTP標頭設置為text / plain來告訴IE不要將其解析為HTML:

<?php
    header('Content-Type: text/plain;charset=utf-8');
    header('Content-Disposition: inline;filename=File.txt');
    echo "Hello World";
?>

===編輯===

不起作用! 請參閱https://github.com/malsup/form/issues/302

===編輯2 ===

我已經搞砸了一點,並且我正在努力。

HTML:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>UNTITLED</title>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="//malsup.github.io/min/jquery.form.min.js"></script>
<script>
$(function() {
    $("#myForm").ajaxForm(function(data) {
        console.log(data);
        $("#myImg").attr("src", "data:image/png;base64, " + data);
    });
});
</script>
</head>
<body>
<form method="post" action="send.php" id="myForm" enctype="multipart/form-data">
<input name="a" type="file">
<input type="submit" value="Submit">
</form>
<img id="myImg">
</body>
</html>

PHP:

<?php
header('Content-Type: text/html');
echo base64_encode(file_get_contents($_FILES['a']['tmp_name']));

而且它確實可以在IE8中很好地呈現(未仿真)。 唯一的是,圖像不能大於4K,因為這是IE中的限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM