Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 网页无法识别函数_Javascript - Fatal编程技术网

Javascript 网页无法识别函数

Javascript 网页无法识别函数,javascript,Javascript,这是一个非常奇怪的问题 我有一个接受姓名/地址信息的网页。我想在输入的州和输入的邮政编码之间进行交叉检查。我在这个网站上找到了一个JS脚本,它将从邮政编码返回状态: 我不会复制它,因为它很长。此代码未报告任何问题 因为它是JS,所以我将代码复制/粘贴到一个名为zipstate.JS的文件中,并在我的脚本部分(位于html页面的末尾)添加了以下行 我把这个函数称为: //cross check the zip to the state in case of typos $zip1 =

这是一个非常奇怪的问题

我有一个接受姓名/地址信息的网页。我想在输入的州和输入的邮政编码之间进行交叉检查。我在这个网站上找到了一个JS脚本,它将从邮政编码返回状态: 我不会复制它,因为它很长。此代码未报告任何问题

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


我把这个函数称为:

//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/>';
       }
//交叉检查邮政编码是否正确,以防输入错误
$zip1=strval($zip)//确保它是一个字符串–可以使用(字符串),但结果相同
$state1=getState($zip1)//这就是错误发生的地方
如果($state!=$state1){//由于错误而无法到达这里,我不关心严格匹配
$error_message.=“邮政编码不属于输入的状态。
”; }
当点击该段代码时,我得到一个错误: 致命错误:未捕获错误:调用[path]堆栈跟踪中未定义的函数getState():#0{main}在第256行的[path]中抛出

这就是函数调用的位置

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

<script>
 [copied code]
</script> 

[复制的代码]
那没用。我从脚本中取出它,并将其作为php内联。没有–这引发了其他错误

我比较了这个文件的格式和JS脚本的工作方式,没有发现任何明显的缺陷

我已经定义了其他JS和PHP函数,它们可以像广告中那样工作

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

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

朋友们,我做错了什么?我错过了什么

这是一个有趣的、耗时的附带项目,我遇到的许多问题都是通过在社区里闲逛解决的。我学到了很多。这一次,我不在我的能力范围之内,虽然这可能有一个非常简单的解决方案,但它超出了我的知识范围。我在这上面花了太多时间,我想我需要一些帮助


谢谢你的回复

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

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

var somevar = <?php echo $myvar; ?>;
var somevar=;
注意:这可能被视为非标准。这只是一个例子

但是不能从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;
}
?>


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

尽量避免在编程中使用卷曲引号,它们会破坏很多东西。您是否尝试从PHP调用该函数?因为从PHP调用JS函数是行不通的。@CertainPerformance-卷曲引号是我用来创建OP的文字处理程序的产物。我使用HTML-KIT来编写网络代码,所以那里真的没有卷曲引号。@Chipster-我想你说得对极了!是的,那正是我正在做的。这是一个在飞行中学习而不是参加课程的问题(而且,在我很老的时候,这样做真的没有意义)。这个例程很容易转换为PHP函数——使用“is_string”而不是“typeof”,并使所有内部变量符合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;
}
?>