0

AJAX の学習。私は次の AJAX スクリプトを持っています。主にナビゲーション (バックエンド php) に使用しています。

function ajaxFunction(linked) {
    var ajaxRequest;
    var loading = $('#loading');
    if(loading.length > 0) {
       loading.css('display', 'block');
    }

    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 and will update
    // div section in the same page.
    ajaxRequest.onreadystatechange = function() { **//READY STATE HERE!**
        if(ajaxRequest.readyState == 4) {
            var ajaxDisplay = $('#wrapper');
            loading.css('display', 'none');
            ajaxDisplay.html(ajaxRequest.responseText);
            if($('#search_field').length > 0) {
                $('#search_field').focus();
            }
            if($('#year').length > 0) {
                $('html').scrollTo('#year');
            }
            startValidation(); **// VALIDATION FUNCTION HERE!**
        }
    }
    // Now get the value from user and pass it to
    // server script.
if(linked == 'addNewPage' || linked == 'add') {
    var queryString = "?page=add";
    queryString +=  "&action=customer&add=new&ajax=ajaxRequest";

} else if(){} etc...

h5validate プラグインをダウンロードして、既に配置されている HTML5 検証を利用しました。問題は、AJAX を介してコンテンツをロードすると、.ready 関数が DOM からバインド解除されて機能しないことです。ReadyState==4 の後に関数を呼び出してみましたが、まだ起動しません。関数は、直接(AJAXなしで)ナビゲートして使用すると機能します:

window.onload = startValidation();

トリガーの検証:

function startValidation() {
    $('.row').h5Validate({
        errorClass:'red'
    });
}

ここでどこが間違っていますか?

4

0 に答える 0