无法在javascript中调用同步函数

无法在javascript中调用同步函数,javascript,php,ajax,Javascript,Php,Ajax,我正在制作一个网络应用程序。其中一部分,我想将js变量传输到php,以将本地保存的用户数据与internet上的数据同步 这是HTML代码: <li><a onclick="sync();">Sync</a></li> 这是php部分: <?php echo $tags; console.log($tags); return $tags; ?> 怎么了?我该怎么办?您很可能在子范围内而不是全局范围内定义了所述函数。快速修复方法是将其

我正在制作一个网络应用程序。其中一部分,我想将js变量传输到php,以将本地保存的用户数据与internet上的数据同步

这是HTML代码:

<li><a onclick="sync();">Sync</a></li>
这是php部分:

<?php
echo $tags;
console.log($tags);
return $tags;
?>

怎么了?我该怎么办?

您很可能在子范围内而不是全局范围内定义了所述函数。快速修复方法是将其添加到窗口:

(function () { // this is an example of what could cause it to be in a child scope
    function sync () {
        ...
    }
    window.sync = sync;
})();

但是我建议您不要使用内联事件处理程序。

问题是,在单击定位点时,函数
sync
在全局范围内不存在

onclick
和其他事件属性通常被认为是不好的做法,您应该使用JavaScript代码中的事件侦听器,如下所示:

var button = document.getElementById("sync");
button.addEventListener("click", sync, false);
注意:在加载DOM后初始化此脚本非常重要,最简单的方法是在关闭body标记之前将其放入

并按如下方式更改您的HTML:

<li><a href="#" id="button">Sync</a></li>
有关事件侦听器的更多信息,请参见:

您必须注意一些浏览器兼容性问题,尤其是旧版本的Internet Explorer,该页面上提供了垫片。

请执行以下操作:

1) 将下面提到的js代码保存在调用sync()函数的同一文件中

<script type="text/javascript">
</script> 

如果您在控制台日志中看到“hi”,请用您的代码替换上述代码。

您很可能在子作用域中而不是全局定义了上述函数。请尝试添加
sync()
在js文件中,函数所在的位置只是为了确保错误不是来自函数,并查看控制台错误日志,上面写着什么
//IE6、IE5的代码
对不起,兄弟……那么,在页面的标记中,函数sync是在哪里定义的呢?
<li><a href="#" id="button">Sync</a></li>
function sync(e) {
   e.preventDefault();

  // Rest of your function
}
<script type="text/javascript">
</script> 
function sync(){
console.log("hi");

}