2014-09-30 123 views
0

我已经继承了一个PHP脚本,它使用in-url POST做了很多逻辑。一旦我们在IE9中发出请求,它会要求用户下载类型为“true”的大小与POST请求非常相似的大小。我们从来没有看到数据未保存在服务器上的任何行为 - 提交后的预期行为是简单地请求下载。Internet Explorer要求下载POST请求作为下载

实际POST呼叫正在使用jQuery.ajax解雇:

$.ajax({ 
    type: "POST", 
    url: "profile/edit-profile-info.php", 
    data:"mail="+mail, 
    success: function() { 
    console.log('Success!!!'); 
    location.reload('true'); //Reloads the page with the form 
    } 
}).done(function() { 
    console.log('Done!!!'); 
    location.reload('true'); //Reloads the page with the form 
}); 

而且reload命令是浏览器对象空间中继承,从我可以告诉。

实际的PHP脚本来处理这个数据基本上是将数据保存在一个ORM(不在代码)并返回一个请求作为纯文本/

header('Content-Type: text/plain; charset=utf-8'); 
$data->record->mail = $_POST['mail']; 

我们试以另一种内容类型的请求,它无法在Chrome,Firefox等中运行。

看看继承的HTML,这些字段被填充到没有表单标签的层次结构中,这让我暂停了原因。我不完全确定这是不是一个罪魁祸首。不幸的是,我不能轻易给出一个评论演示。但如果有人看到这个或有任何想法的原因,洞察力将不胜感激。

+0

对于初学者,你可能有一个编码问题试试'data:{mail:mail},'而不是你拥有的。接下来,捕获PHP脚本的响应,以便我们可以看到标题和不是。 – Brad 2014-09-30 18:50:58

+0

我正在踢出将它全部重做为JSON的想法。响应(如代码所示)与我们在PHP文件中提出的任何请求无关,它只是重新加载页面。 – 2014-09-30 19:59:44

+0

你不必使用JSON ...我只是说你有一个序列化问题,如果你传入一个对象,jQuery将会在你的查询字符串格式的POST数据中完成所有的转义。 – Brad 2014-09-30 20:40:57

回答

1

在location.reload('true');中移除真的逗号。它需要一个布尔值,并将其作为一个字符串输入,而不是IE所期望的。