网页无法识别功能

时间:2019-03-11 01:39:58

标签: javascript

这是一个非常奇怪的问题。

我有一个接受名称/地址信息的网页。我想在输入的状态和输入的邮政编码之间进行交叉检查。我在此站点上找到了一个JS脚本,该脚本将从邮政编码返回状态:How can I quickly determine the State for a given zipcode? 我不会复制它,因为它很长。此代码没有报告的问题。

由于是JS,我将该代码复制/粘贴到名为zipstate.js的文件中,并在脚本部分(位于html页的末尾)中添加了以下行

<script src=”zipstate.js”></script>

我在这里调用该函数:

//cross check the zip to the state in case of typos 
    $zip1 = strval($zip);    //make sure it's a string – could use (string) but same results
    $state1 = getState($zip1); //this is where the error occurs
    if ($state != $state1 ) {  //never get here because of the error – and I don’t care about strict matching
            $error_message .= 'The ZIP code does not belong to the entered state.<br/>';
       }

当碰到这段代码时,我得到一个错误:     致命错误:未捕获错误:在[path]堆栈跟踪中调用未定义的函数getState():在第256行的[path]中抛出#0 {main}

这是函数调用所在的位置。

我确保该函数的名称与我所调用的名称匹配。我移动了该脚本定义,将其放置在部分中,将其放置在的顶部附近,然后将代码实际上嵌入到主文件中,并将其定义为:

<script>
 [copied code]
</script> 

那没有用。我将其从脚本中取出,并以php形式内联。不,这引发了其他错误。

我比较了此文件的格式和可运行的JS脚本的格式,但没有发现任何明显的缺陷。

我还定义了其他JS和PHP函数,这些函数可以像宣传的那样工作。

奇怪的是,当我打开开发人员面板时,在控制台下没有看到任何错误,在源下也看到了文件,并且在扫描源时没有看到任何错误。奇怪的。

我在该网站上搜索了类似的错误,但它们似乎都与折旧的函数有关,或者使用MYSQL调用而不是MYSQLi。该脚本使用关键字“ typeof”,我认为该关键字不被贬值或删除。

那么,朋友,我在做什么错?我错过了什么?

这很有趣,而且很耗时,是一个项目,而且我遇到的许多问题都可以通过在社区中闲逛来解决。我学到了很多东西。这次,我不在同盟之列,虽然这可能有一个非常简单的解决方案,但超出了我的范围。我在此上花了太多时间,我想我可以使用一些帮助。

感谢您的答复。

1 个答案:

答案 0 :(得分:0)

那是因为您试图从PHP调用Javascript函数。你不能那样做。两者是相互独立的。

通常,PHP可以像这样影响Javascript:

var somevar = <?php echo $myvar; ?>;
  

注意:这可能被视为非标准。这只是一个例子。

但是您不能从PHP调用Javascript函数。两者彼此独立。

解决方案:该解决方案很简单,将Javascript函数移植到PHP。这通常说起来容易做起来难,但是这样做似乎并不难:

<?php // because we are in PHP, of course
function getState($zipcode) {

    // Ensure param is a string to prevent unpredictable parsing results
    if (is_string($zipcode)) {
        // It really depends on how you wish to log this. You could echo, or
        // return something, throw an exception even. For now I'v just commented it out
        // console.log('Must pass the zipcode as a string.');
        return;
    }

    // Ensure you don't parse codes that start with 0 as octal values
    $thiszip = (int)$zipcode; 

    // Code blocks alphabetized by state
    if ($thiszip >= 35000 && $thiszip <= 36999) {
        $thisst = 'AL';
        $thisstate = "Alabama";
        }
    else if ($thiszip >= 99500 && $thiszip <= 99999) {
        $thisst = 'AK';
        $thisstate = "Alaska";
        }
    else if ($thiszip >= 85000 && $thiszip <= 86999) {
        $thisst = 'AZ';
        $thisstate = "Arizona";
        }
    else if ($thiszip >= 71600 && $thiszip <= 72999) {
        $thisst = 'AR';
        $thisstate = "Arkansas";
        }
    else if ($thiszip >= 90000 && $thiszip <= 96699) {
        $thisst = 'CA';
        $thisstate = "California";
        }
    else if ($thiszip >= 80000 && $thiszip <= 81999) {
        $thisst = 'CO';
        $thisstate = "Colorado";
        }
    else if ($thiszip >= 6000 && $thiszip <= 6999) {
        $thisst = 'CT';
        $thisstate = "Connecticut";
        }
    else if ($thiszip >= 19700 && $thiszip <= 19999) {
        $thisst = 'DE';
        $thisstate = "Deleware";
        }
    else if ($thiszip >= 32000 && $thiszip <= 34999) {
        $thisst = 'FL';
        $thisstate = "Florida";
        }
    else if ($thiszip >= 30000 && $thiszip <= 31999) {
        $thisst = 'GA';
        $thisstate = "Georgia";
        }
    else if ($thiszip >= 96700 && $thiszip <= 96999) {
        $thisst = 'HI';
        $thisstate = "Hawaii";
        }
    else if ($thiszip >= 83200 && $thiszip <= 83999) {
        $thisst = 'ID';
        $thisstate = "Idaho";
        }
    else if ($thiszip >= 60000 && $thiszip <= 62999) {
        $thisst = 'IL';
        $thisstate = "Illinois";
        }
    else if ($thiszip >= 46000 && $thiszip <= 47999) {
        $thisst = 'IN';
        $thisstate = "Indiana";
        }
    else if ($thiszip >= 50000 && $thiszip <= 52999) {
        $thisst = 'IA';
        $thisstate = "Iowa";
        }
    else if ($thiszip >= 66000 && $thiszip <= 67999) {
        $thisst = 'KS';
        $thisstate = "Kansas";
        }
    else if ($thiszip >= 40000 && $thiszip <= 42999) {
        $thisst = 'KY';
        $thisstate = "Kentucky";
        }
    else if ($thiszip >= 70000 && $thiszip <= 71599) {
        $thisst = 'LA';
        $thisstate = "Louisiana";
        }
    else if ($thiszip >= 3900 && $thiszip <= 4999) {
        $thisst = 'ME';
        $thisstate = "Maine";
        }
    else if ($thiszip >= 20600 && $thiszip <= 21999) {
        $thisst = 'MD';
        $thisstate = "Maryland";
        }
    else if ($thiszip >= 1000 && $thiszip <= 2799) {
        $thisst = 'MA';
        $thisstate = "Massachusetts";
        }
    else if ($thiszip >= 48000 && $thiszip <= 49999) {
        $thisst = 'MI';
        $thisstate = "Michigan";
        }
    else if ($thiszip >= 55000 && $thiszip <= 56999) {
        $thisst = 'MN';
        $thisstate = "Minnesota";
        }
    else if ($thiszip >= 38600 && $thiszip <= 39999) {
        $thisst = 'MS';
        $thisstate = "Mississippi";
        }
    else if ($thiszip >= 63000 && $thiszip <= 65999) {
        $thisst = 'MO';
        $thisstate = "Missouri";
        }
    else if ($thiszip >= 59000 && $thiszip <= 59999) {
        $thisst = 'MT';
        $thisstate = "Montana";
        }
    else if ($thiszip >= 27000 && $thiszip <= 28999) {
        $thisst = 'NC';
        $thisstate = "North Carolina";
        }
    else if ($thiszip >= 58000 && $thiszip <= 58999) {
        $thisst = 'ND';
        $thisstate = "North Dakota";
        }
    else if ($thiszip >= 68000 && $thiszip <= 69999) {
        $thisst = 'NE';
        $thisstate = "Nebraska";
        }
    else if ($thiszip >= 88900 && $thiszip <= 89999) {
        $thisst = 'NV';
        $thisstate = "Nevada";
        }
    else if ($thiszip >= 3000 && $thiszip <= 3899) {
        $thisst = 'NH';
        $thisstate = "New Hampshire";
        }
    else if ($thiszip >= 7000 && $thiszip <= 8999) {
        $thisst = 'NJ';
        $thisstate = "New Jersey";
        }
    else if ($thiszip >= 87000 && $thiszip <= 88499) {
        $thisst = 'NM';
        $thisstate = "New Mexico";
        }
    else if ($thiszip >= 10000 && $thiszip <= 14999) {
        $thisst = 'NY';
        $thisstate = "New York";
        }
    else if ($thiszip >= 43000 && $thiszip <= 45999) {
        $thisst = 'OH';
        $thisstate = "Ohio";
        }
    else if ($thiszip >= 73000 && $thiszip <= 74999) {
        $thisst = 'OK';
        $thisstate = "Oklahoma";
        }
    else if ($thiszip >= 97000 && $thiszip <= 97999) {
        $thisst = 'OR';
        $thisstate = "Oregon";
        }
    else if ($thiszip >= 15000 && $thiszip <= 19699) {
        $thisst = 'PA';
        $thisstate = "Pennsylvania";
        }
    else if ($thiszip >= 300 && $thiszip <= 999) {
        $thisst = 'PR';
        $thisstate = "Puerto Rico";
        }
    else if ($thiszip >= 2800 && $thiszip <= 2999) {
        $thisst = 'RI';
        $thisstate = "Rhode Island";
        }
    else if ($thiszip >= 29000 && $thiszip <= 29999) {
        $thisst = 'SC';
        $thisstate = "South Carolina";
        }
    else if ($thiszip >= 57000 && $thiszip <= 57999) {
        $thisst = 'SD';
        $thisstate = "South Dakota";
        }
    else if ($thiszip >= 37000 && $thiszip <= 38599) {
        $thisst = 'TN';
        $thisstate = "Tennessee";
        }
    else if ( ($thiszip >= 75000 && $thiszip <= 79999) || ($thiszip >= 88500 && $thiszip <= 88599) ) {
        $thisst = 'TX';
        $thisstate = "Texas";
        }
    else if ($thiszip >= 84000 && $thiszip <= 84999) {
        $thisst = 'UT';
        $thisstate = "Utah";
        }
    else if ($thiszip >= 5000 && $thiszip <= 5999) {
        $thisst = 'VT';
        $thisstate = "Vermont";
        }
    else if ($thiszip >= 22000 && $thiszip <= 24699) {
        $thisst = 'VA';
        $thisstate = "Virgina";
        }
    else if ($thiszip >= 20000 && $thiszip <= 20599) {
        $thisst = 'DC';
        $thisstate = "Washington DC";
        }
    else if ($thiszip >= 98000 && $thiszip <= 99499) {
        $thisst = 'WA';
        $thisstate = "Washington";
        }
    else if ($thiszip >= 24700 && $thiszip <= 26999) {
        $thisst = 'WV';
        $thisstate = "West Virginia";
        }
    else if ($thiszip >= 53000 && $thiszip <= 54999) {
        $thisst = 'WI';
        $thisstate = "Wisconsin";
        }
    else if ($thiszip >= 82000 && $thiszip <= 83199) {
        $thisst = 'WY';
        $thisstate = "Wyoming";
        }
    else {
        $thisst = 'none';
    }
   return $thisst;
}
?>

那应该可以解决您的问题。