我必须完成的事情是通过<input type="file"...
选择我的图像文件
使用php脚本处理它,调整图像大小并返回字符串中的图像echo的base64值作为php脚本的结果。我已经使用Firefox,Chrome和Internet Explorer 10完成了它。
我正在使用jquery.form.js在ie8和ie9中完成相同的行为来对php脚本执行ajax调用并返回数据。问题是在这个浏览器中,Internet Explorer 8-9返回一个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”字符串。我希望有人能帮帮忙。提前谢谢。
答案 0 :(得分:0)
我不知道ajaxForm的内部工作方式是如何完成的,但我猜它会使用iframe发布数据并在iframe加载时读取iframe。 IE将通过创建&#34;缺失&#34;来强制返回的字符串为HTML。 &LT; HTML&GT;和&lt; body&gt;元素。您应该通过将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的限制。