0

これはおそらく非常に単純な質問です。

メインのhtmlファイルにリンクされた外部javascriptファイルがあります。リンクは良好ですが、呼び出されたときに関数が実行されません。コピーしてメインのhtmlファイルに貼り付けることができるため、関数が機能することは事実です。ただし、外部ファイルにある瞬間、関数は実行されません。

私は何を間違っていますか?

メインのhtmlファイルのスニペット:

<html>

<head>
    <link rel="stylesheet" href="style.css">
    <script type="text/javascript" src="VRC_Index_Ajax_Functions.js"></script><--The issue file-->
    <script type="text/javascript" src="validations.js"></script> <--This file works-->

これは私の VRC_Index_Ajax_Functions.js ファイル全体です。主に扱っている関数はshowHint(str)です。showHint_l(str) もこのファイル内では機能しないことに言及します。他の機能についてはまだわかりません。

 //VRC_Index_Ajax_Function.js - ajax calls


//Publisher Hints - First Name
function showHint(str)
{
 if (str.length==0)
 {
   document.getElementById("txtHint").innerHTML="";
   return;
 }
 if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp=new XMLHttpRequest();
 }
 else
 {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
 xmlhttp.onreadystatechange=function()
 {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
 {
   document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
 }
 }
 xmlhttp.open("GET","gethint.php?q="+str,true);
 xmlhttp.send();
}

//Publisher Hints - Last Name
function showHint_l(str)
{
 if (str.length==0)
{
 document.getElementById("txtHint").innerHTML="";
 return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
 xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
   document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint2.php?q="+str,true);
xmlhttp.send();
}

 //Ajax function for checking out territories - it will simply call the php file
 function checkOut(params)
{
var urlString = params;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
    document.getElementById("test").innerHTML=xmlhttp.responseText; 
}
//Setup for post submission 
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.open("POST","checkOut.php",true);
xmlhttp.send(urlString);
}



//Function that displays checked out territories
function displayChOut(params)
{
if(window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("displayCO").innerHTML=xmlhttp.responseText;
    }
}

xmlhttp.open("POST","ajax_checked_out.php",true);
xmlhttp.send();
 }

 function checkStatus()
 {
if(window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function()
{
    if(xmlhttp.readystate == 4 && xmlhttp.status == 200)
    {
    document.getElementsByName("numberOut").innerHTML=xmlhttp.responseText;
    }
}

xmlhttp.open("POST", "checkStatus_php.php", true);
xmlhttp.send();
 }

外部ファイルで突然機能しなくなる理由が本当にわかりません。どんな助けでも大歓迎です。

4

3 に答える 3

1

関数の右中括弧がありません:

function showHint(str) {
    if (str.length === 0) {
        document.getElementById("txtHint").innerHTML = "";
        return;
    }
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "gethint.php?q=" + str, true);
    xmlhttp.send();
}

//Publisher Hints - Last Name
function showHint_l(str) {
    if (str.length === 0) {
        document.getElementById("txtHint").innerHTML = "";
        return;
    }
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "gethint2.php?q=" + str, true);
    xmlhttp.send();
}

//Ajax function for checking out territories - it will simply call the php file
function checkOut(params) {
    var urlString = params;
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("test").innerHTML = xmlhttp.responseText;
        }
        //Setup for post submission 
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.setRequestHeader("Content-length", params.length);
        xmlhttp.open("POST", "checkOut.php", true);
        xmlhttp.send(urlString);
    }
} // Here



//Function that displays checked out territories
function displayChOut(params) {
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("displayCO").innerHTML = xmlhttp.responseText;
        }
    }

    xmlhttp.open("POST", "ajax_checked_out.php", true);
    xmlhttp.send();
}

function checkStatus() {
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readystate == 4 && xmlhttp.status == 200) {
            document.getElementsByName("numberOut").innerHTML = xmlhttp.responseText;
        }
    }

    xmlhttp.open("POST", "checkStatus_php.php", true);
    xmlhttp.send();
}

あなたの質問とはあまり関係ありませんが、保守性の点です:

xmlhttpこのコードによりグローバルです。

スコープなしで割り当てられます。

変数を関数スコープに対してローカルにするには、次のようにします。

function somefunc() {
    var xmlhttp;
    ...
}
于 2012-09-08T06:29:15.500 に答える
0

すべての js インクルードを html ファイルの末尾に移動してみてください。DOM の準備が整う前に、この関数を呼び出す可能性があります。

于 2012-09-08T06:27:00.993 に答える
0

まだコードを調べていませんが、javascript ファイルの一部が不正な形式であると、ファイル全体が機能しなくなります。中かっこ {} またはかっこが欠落している場合、またはその他の構文エラーがある場合。

于 2012-09-08T06:27:08.727 に答える