AJAX-вызов страницы ASP для обновления записи базы данных работает только один раз в IE9 - PullRequest
0 голосов
/ 08 января 2012

После нескольких полезных советов от участников этого форума я подхожу ближе к решению простой проблемы. Я новичок в AJAX.

Может кто-нибудь сказать, почему этот кусок кода работает нормально в Firefox 8, но не в IE 9? Он работает ОДИН РАЗ в IE, но не снова, если я не закрою браузер и снова не открою !! ??

<script language="javascript" type="text/javascript">
<!--
    //Browser Support Code
    function ajaxFunction(){
        var ajaxRequest;
        try {
            // Opera 8.0+, Firefox, Safari
            ajaxRequest = new XMLHttpRequest();
        } 
        catch(e) {
            // Internet Explorer Browsers
            try {
                ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
            } 
            catch(e) {
                try {
                    ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (e){
                    // Something went wrong
                    alert("Your browser broke!");
                    return false;
                }
            }
        }

        // Create a function that will receive data sent from the server
        ajaxRequest.onreadystatechange = function(){
            if (ajaxRequest.readyState == 4) {
            }
        }

        ajaxRequest.open("GET", "disp_processTEXT.asp", false);
        ajaxRequest.send(null);
    }
//-->
</script>

Состояние чтения оставлено пустым, так как это скопированный код, который изначально присвоил значение div, но я хочу только запустить код базы данных на странице asp. Предположительно это можно было удалить?

Код для запуска на странице asp:

<%
    Set MyConn = Server.CreateObject("ADODB.Connection")
    MyConn.Open "dsn=xxx;uid=xxx;password=xxx;"
        SQLString = "UPDATE dbo_tbl_printing_tempstore SET front_has_text1 = 'YES', front_text = 'help' WHERE id = 106567"
        MyConn.Execute(SQLString)
    MyConn.Close
    Set MyConn = Nothing
%>

Пожалуйста, помогите мне, потому что это сводит меня с ума.

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 08 января 2012

Переключитесь на jQuery и его Ajax-систему, так как она должна быть совместима с кроссбраузерными системами, и сэкономит вам огромное количество времени:

Добавить ссылку на jQuery:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

и переключитесь на Ajax-метод (место под указанным выше):

<script type="text/javascript">
    $(document).ready(function() {
        $.ajax({
          url: 'disp_processTEXT.asp',
          success: function(response) {
            alert('It worked');
          }
        });
    });
</script>

Обновление:

Чтобы связать событие onblur с помощью jQuery, попробуйте это. Удалите атрибут onblur = из текущего кода.

$(document).ready(function() {
    $('#yourinput').on('blur', function(){        
        $.ajax({
          url: 'disp_processTEXT.asp',
          success: function(response) {
            alert('It worked');
          }
        });
    });
});

Демо: http://jsfiddle.net/qmPLj/

0 голосов
/ 09 января 2012

Попробуй это.Он работал для меня во всех браузерах, кроме некоторых версий Opera.

function GetXmlHttpObject(handler)
{
     var objXmlHttp=null;
     if(navigator.userAgent.indexOf("MSIE")>=0)
     {
          var strName="Msxml2.XMLHTTP";
          if(navigator.appVersion.indexOf("MSIE 5.5")>=0)
          {
               strName="Microsoft.XMLHTTP";
          }
          try
          {
               objXmlHttp=new ActiveXObject(strName);
               objXmlHttp.onreadystatechange=handler;
               return objXmlHttp;
          }
          catch(e)
          {
               alert("Error. Scripting for ActiveX might be disabled");
               return;
          }
     }
     else //All other browsers
     {
          objXmlHttp=new XMLHttpRequest();
          objXmlHttp.onload=handler;
          objXmlHttp.onerror=handler;
          return objXmlHttp;
     }
}

var url= "http://www.example.com/";
xmlHttp=GetXmlHttpObject(stateChanged);
xmlHttp.open("GET", url , true);
xmlHttp.send(null);
...