Ajax只有IE9才会提交,没有错误

时间:2012-11-03 00:30:35

标签: jquery ajax internet-explorer post

这适用于所有浏览器,我见过类似“IE 9不工作的帖子”。这个有点不同我想是因为我做了一些非常基本的事情。

除了IE 9之外,所有浏览器都能正常运行,IE 9甚至不会将数据发送到我的mail.php页面。

非常感谢帮助。

提交代码:

$(function() {  
  $(".submit").click(function() {  
    var name = $("input#name").val();
    var email = $("input#email").val();
    var topic = $("select#topic").val();
    var message = $("textarea#message").val();
    var dataString = 'name='+ name + '&email=' + email + '&topic=' + topic + '&message=' + message;
    $.ajax({  
        type: "POST",  
        url: "http://***.***/***/mail.php",  
        data: dataString,  
        success: function() {
            $('.holder').hide();
            $('#callback').show().append("Your feedback is appreciated, thank you!");
        },
        error:function(){
            alert(dataString);
            $('.holder').hide();
            $('#callback').show().append("There was an error processing your     request, we're very sorry please try again later.");
        }
});  
return false; 


  });  
}); 

这是HTML(我用 * 来隐藏数据):

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link rel="stylesheet" href="contactable.css" type="text/css" />
<script src="jquery.js"></script>
</head>

<body>
<div id="contactable">
<div id="contactable_inner"></div>
<div id="carFeedbackForm">
<div id="close"><u>Close</u></div>
<form id="contactForm" action="">
<div id="loading"></div>
<div id="callback"></div>
<div class="holder">

<p><label for="name">Name<span class="red"> * </span></label><br />
<input id="name" class="contact" name="name"/></p>

<p><label for="email">Email <span class="red"> * </span></label><br />
<input id="email" class="contact" name="email" /></p>

<p><label for="topic">Topic&nbsp</label><select id="topic" class="contact" name="topic">
<option>I Like</option>
<option>I Dislike</option>
<option>Cannot login</option>
<option>***(R)</option>
<option>Broken Link</option>
<option>Other</option></select></p><br />

<p><label for="message">Message <span class="red"> * </span></label><br />
<textarea id="message" name="message" class="message" rows="4" cols="30" ></textarea></p><br>

<p class="disclaimer">We are always interested in hearing from you. 
Your feedback will help us improve your online experience.</p>
<p><input class="submit" type="submit" value="Send"/></p>
</div></div></form>

2 个答案:

答案 0 :(得分:1)

尝试对帖子参数使用对象表示法:

var data = {
    name: $("input#name").val(),
    email: $("input#email").val(),
    topic: $("select#topic").val(),
    message: $("textarea#message").val()
};
$.ajax({  
    ...
    data: data,  
    ...
});

答案 1 :(得分:0)

我非常确定这是您的问题,并且已经看到其他具有相同问题的人通过为网址正确编码数据来解决问题。见encodeURIComponent

你的代码

        var dataString = 'name='+ name + '&email=' + email + '&topic=' + topic + '&message=' + message;

如果名字是&#34;我的名字&#34; ,这将在IE9中破解,其他浏览器在发送数据之前自动尝试编码字符串