【问题标题】:body onload does not trigger javascript jquery正文 onload 不会触发 javascript jquery
【发布时间】:2014-11-02 20:04:15
【问题描述】:

我试图在加载 html 页面时触发一个函数。为了实现这一点,我正在使用 body onload。在我看来,该功能没有被触发。我已经在页面的头部包含了 jQuery 库,并检查了它们是否真的位于它们应该在的位置。该脚本正在调用一个 php 文件,该文件每秒检查我数据库中的一个值。它应该向 html 页面返回一个状态(响应)。

这里是 html 加载代码:

<body onload="setInterval(check_search_status, 1000)" >  

在页面的最底部,就在正文关闭标记之前,我将函数本身定义为 JavaScript。如您所见,我正在尝试使用会话变量将 id 参数传递给 checksearchstatus.php 页面。

<script type="text/javascript">
        function check_search_status(){
            $jQuery.ajax({
                type: 'POST',
                url: 'http://internetsolutions.no/checksearchstatus.php',
                data: {
                    id: '{$_SESSION['owner']}';
                },
                dataType: 'json',
                success: function(response){
                    if(response.status == 0){
                        window.location='http://internetsolutions.no/findings.php';
                    }
                }
            });
        }
    </script>

【问题讨论】:

  • id: '&lt;?php echo $_SESSION["owner"]; ?&gt;';.
  • 控制台显示“重定向因 CORS 请求而被阻止”。不知道这是什么意思
  • 为什么要轮询来执行本质上是一次性的任务?从民意调查到民意调查似乎没有任何变化 - 数据始终相同。
  • “CORS-request”错误是因为你试图发出一个跨域ajax请求,被浏览器阻止了。
  • 我正在做的请求在同一个域内。知道如何重写请求以避免此错误吗?可以做什么?

标签: javascript php jquery html


【解决方案1】:

换行

$jQuery.ajax({

只是

$.ajax({

【讨论】:

  • 你怎么知道 $jQuery !== $ 在 OP 的情况下?
  • @dfsq 我没有,假设。
【解决方案2】:

我在这里看到了一些问题,除了其他人指出的问题。

  1. 您正在混合使用 JS 和 PHP。示例:id: '{$_SESSION['owner']}';。这是无法做到的,因为 PHP 运行服务器端,而 JS 运行客户端(在浏览器中)。你

  2. 我认为你的 onload 事件应该写成:setInterval(function() {check_search_status();}, 1000);

【讨论】:

  • 抱歉,id: '{$_SESSION['owner']}' 是可能的。我们在这里看到的是来自服务器端 (PHP) 脚本的 sn-p,而不是最终提供的页面源代码。
  • 并且setInterval(check_search_status, 1000) 是有效的。可以通过名称指定函数。不需要匿名函数包装器。
【解决方案3】:

改为调用$(document).ready() 中的函数。您的代码包含语法错误。将$jQuery.ajax 更改为$.ajaxid: '{$_SESSION['owner']}'; 更改为id: '&lt;?=$_SESSION["owner"]?&gt;'

$(document).ready(function(){
    check_search_status();
});
function check_search_status(){
    $.ajax({
        type: 'POST',
        url: 'http://internetsolutions.no/checksearchstatus.php',
        data: {
            id: '<?=$_SESSION["owner"]?>'
        },
        dataType: 'json',
        success: function(response){
            if(response.status == 0){
                window.location='http://internetsolutions.no/findings.php';
            }
        }
    });
}

【讨论】:

  • &lt;script&gt; var $111 = jQuery.noConflict();&lt;/script&gt; &lt;script type="text/javascript"&gt; function check_search_status(){ $111.ajax({ type: 'POST', url: 'http://internetsolutions.no/checksearchstatus.php', data: { id: '135' }, dataType: 'json', success: function(response){ if(response.status == 0){ window.location='http://internetsolutions.no/findings.php'; } } }); } $111(document).ready(function(){ check_search_status(); }); &lt;/script&gt;
  • 很抱歉格式错误,但这就是代码现在的样子。还是行不通。控制台中没有来自此脚本的错误消息
  • if(response.status == 0) 更改为 if(response.status == 1)
  • 问题是值 0 是从数据库中获取的。将其更改为 1 将破坏应用程序中的逻辑。控制台中其他jquery脚本抛出了一些错误,这可能是原因吗?抱歉,对 jQuery 很陌生
  • jQuery 执行如果发生在同一个文件中会被异常终止!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
相关资源
最近更新 更多