Coldfusion 11 Ajax 调用在生产服务器上不工作

Coldfusion 11 Ajax calls not working on production server

我们有 2 个相同的服务器 运行 windows、sql 服务器和 coldfusion 11 标准

我们已将网站迁移到其中一台服务器,但是当我们将网站复制到第二台服务器时,AJAX 调用无法正常工作!其他一切正常,只有 ajax 调用。两个 coldfusion 安装之间的唯一区别是一个是开发服务器,另一个已配置为生产服务器。

为什么 ajax 调用在生产服务器上不起作用?

示例 - 如前所述,两台服务器具有完全相同的网站文件和完全相同的数据库。开发站点可以运行,但生产服务器上没有 ajax 调用。

<script type="text/javascript">
            $(function(){               
                var Location = $("#Location"),
                Other = $("#Other"),
                ContactNo = $("#ContactNo"),
                allFields = $( [] ).add( Location ).add( Other ).add( ContactNo );

            var txtLocation = $('#Location').val();
            var txtOther = $('#Other').val();            
            if(txtLocation == 'Other' || txtLocation == 'Client site'){   
              $('#Other').show();  
            }   
            else{   
              $('#Other').hide();   
            }  

            $('#Location').change( function() {
                var selected = $(this).val();   
                if(selected == 'Other' || selected == 'Client site'){   
                  $('#Other').show();   
                }   
                else{   
                  $('#Other').hide();   
                }  
            }); 

            $('#dialog-MyStatus').dialog({  
                 autoOpen: false,  
                 width: 400,  
                 modal: true,  
                 resizable: false,  
                 buttons: {
                    "Update my status": function() {
                        var bValid = true;
                        allFields.removeClass( "ui-state-error" );       
                        bValid = bValid && checkLength( Location, "ContactNo", 2, 50 );
                        if ($('#Location').val() == 'Other'  || $('#Location').val() == 'Client site'){
                            bValid = bValid && checkLength( Other, "Other", 3, 50 );
                        }

                        if ( bValid ) {
                            //organize the data properly
                            var data = 'method=SetStatus&Location=' + Location.val() + '&Other=' + Other.val() + '&ContactNo=' + 
                            ContactNo.val();                    
                            //start the ajax
                            $.ajax({
                                url: "/templates/cfc/mystatus.cfc", 
                                type: "POST",
                                data: data, 
                                cache: false,
                                success: function (html) {          
                                    //hide the form
                                    $('#MyStatus').fadeOut('slow');
                                    var txtLocation = $('#Location option:selected').text();
                                    var txtOther = $('#Other').val();
                                    var txtContactNo = $('#ContactNo').val();                                       
                                    $('#MyLocation').text(txtLocation);
                                    if (txtLocation != 'Other' && txtLocation != 'Client site'){
                                        $('#MyLocationOther').text('');
                                        $('#MyRemLocation').text(txtLocation);
                                    }
                                    else {
                                        $('#MyLocationOther').text(txtOther);
                                        $('#MyRemLocation').text(txtOther);
                                    }
                                    $('#MyRemContactNo').text(txtContactNo);                                            
                                    $('#MyContactNo').text(txtContactNo);                                           
                                    $('#StatusMessage').text('');   
                                    location.reload();                                      
                                    $('#dialog-MyStatus').dialog("close");  
                                }   
                            });
                        }
                        //cancel the submit button default behaviours
                        return false;
                    }//,
                    //Cancel: function() {
                    //  $(this).dialog("close");
                    //}
                },
                close: function() {
                    allFields.val("").removeClass( "ui-state-error" );
                }                    
             });                 
        });
        function MyStatusSet (){
            $('#MyStatus').fadeIn('slow');
            var txtCurrentLocation = $('#MyLocation').text();
            var txtCurrentLocationOther = $('#MyLocationOther').text();
            var txtCurrentContactNo = $('#MyContactNo').text();
            $("#Location option[value='"+txtCurrentLocation+"']").attr('selected', 'selected');
            $('#Other').val(txtCurrentLocationOther);
            $('#ContactNo').val(txtCurrentContactNo);
            $('#dialog-MyStatus').dialog('open');   
            return false; 
         };
        </script>

登录到 CF Administrator 并转到 Debugging & Logging > Debug Output Settings 并确保您已启用 Enable AJAX Debug Log Window 选项。

感谢大家花时间解决这个问题。我们发现了它是什么。当我们将开发版本迁移到生产站点时,我们没有创建指向必要 dll 的虚拟目录 "jakarta"。一旦我们创建了这个虚拟目录,一切就都正常了。我认为这是 ColdFusion 版本 10 的要求。请参阅 ColdFusion 10, IIS 7.5 - Getting a 404 even though file exists