2012-12-04 60 views
0

由于某种原因,我的表单在除Internet Explorer之外的每个浏览器中都有效。表单在Internet Explorer中不起作用,但在其他浏览器中可用

这是HTML:这是由别人设计的。

<label for="name">Name:</label><br /> 
    <input name="name" type="text" /><br /> 
    <label for="address">Address:</label><br /> 
    <input name="address" type="text" /><br /> 
    <label for="phone">Phone:</label><br /> 
    <input name="phone" type="text" /><br /> 
    <label for="email">Email:</label><br /> 
    <input name="email" type="text" /><br /> 
    <input class="button" name="submit" style="margin-top:10px;" type="button" value="Join Club" /></div> 

这里是JavaScript:这是由除我之外的人设计的。

<script type="text/javascript"> 
    ///////////////////////////////////////////////ARRAY DUMP FUNCTION 
    function dump(a,b){var c="";if(!b)b=0;var d="";for(var e=0;e<b+1;e++)d+="   ";if(typeof a=="object"){for(var f in a){var g=a[f];if(typeof g=="object"){c+=d+"'"+f+"' ...\n";c+=dump(g,b+1)}else{c+=d+"'"+f+"' => \""+g+'"\n'}}}else{c="===>"+a+"<===("+typeof a+")"}return c} 
    ///////////////////////////////////////////// 
$(document).ready(function() { 
    $('.clubregister input[name="submit"]').click(function(event) { 
     event.preventDefault(); 
        /*alert('This section is under construction, please contact us to get set up!\n Sorry for the inconvenience');return false;*/ 
     //CREATE ARRAY FROM FORM DATA SERIALIZED 
     var $formData = $('.clubregister input[type="text"], .clubregister textarea').serializeArray(); 
     //PUSH ACTION TO ARRAY 
     $formData.push({'name':'action','value':'registerForClub'}); 
     //SEND DATA TO HANDLER 
     $.ajax({ 
      url:'http://torkliftcentralrv.com/club_register_handle.php', 
      dataType:'json', 
      async:false, 
      data:$formData, 
      success: function(data) { 
       //console.log(dump(data)); 
       //CREATE MESSAGE 
       var message = ''; 
       var consolemessage = ''; 
       //IF ERRORS 
       if(typeof data['error'] !== 'undefined') { 
        //APPEND ERRORS TO MESSAGE 
        $.each(data['error'], function(index,data) { 
         message += (data + "\n"); 
        }); 
       } 
       //IF MESSAGES 
       if(typeof data['message'] !== 'undefined') { 
        //APPEND MESSAGES TO MESSAGE 
        $.each(data['message'], function(index,data) { 
         message += (data + "\n"); 
        }); 
       } 

       //IF CONSOLE MESSAGES 
       if(typeof data['console'] !== 'undefined') { 
        //APPEND CONSOLE MESSAGES TO MESSAGE 
        $.each(data['console'], function(index,data) { 
         consolemessage += (data + "\n"); 
        }); 
       } 
       //IF SUCCESS SENT FROM SERVER 
       if(typeof data['success'] !== 'undefined') { 
        //CLEAR FORM 
        $('.clubregister input[type="text"], .clubregister textarea').val(''); 
       } 
       alert(message); 
       console.log(consolemessage); 
      } 
     }); 
    }); 
}); 

什么想法?

+1

什么位不工作? IE在调试控制台(f12)中是否包含任何错误消息? – DaveHogan

+0

该按钮不会提交数据。它什么都不做。 – jukebox535

+1

试试Firefox的firebug javascript控制台,或者Chrome开发人员工具(或类似的东西)中的控制台,以查看任何JS错误消息。这可能是 - 某处 - JS错误,这可能是因为缺少撇号到AJAX的任何内容。 – Sean

回答

0

您正在尝试执行跨域Ajax请求。 IE8和IE9支持跨域请求,但它们使用自定义API XDomainRequest,它具有several limitations

即,链接文档中的#4:“只有text/plain支持请求的Content-Type标头”。您要求提供JSON,但您无法使用XDomainRequest发送Content-Type: text/json

尝试删除dataType:'json'行并将data = $.parseJSON(data)添加到您的success处理程序的第一行。

+0

我尝试这样做,现在我的代码看起来是这样的:“//如果成功从服务器发送数据= $ .parseJSON(数据) \t \t \t \t \t如果(typeof运算数据[”成功]!== '未定义'){ \t \t \t \t \t \t // CLEAR FORM \t \t \t \t \t \t $( 'clubregister输入[类型= “文本”],.clubregister textarea的 ')。VAL('') ;” – jukebox535

+0

使用这些编辑时表单崩溃了。 – jukebox535

+0

@ jukebox535不,我的意思是在你的'$ .ajax''成功函数的顶部。在'//console.log(dump(data));'之后加上它,并且在'success:function(data){' – apsillers

0

删除行:

console.log(consolemessage);

IE无法处理此,并会导致你的问题。

+0

这不起作用。 – jukebox535

相关问题