php - JavaScript 不工作,没有错误

标签 php javascript ajax

我有以下 JavaScript 代码,加载时没有错误,但是更新功能实际上似乎不起作用,因为 get_Records.php 从未加载。我无法测试 get_auction.php 是否已加载,因为它是从 get_records.php 中加载的

我主要担心的问题之一是,我让 update() 接受参数 pk 和查询是错误的,因为只有其中一个会被使用。这似乎是一个糟糕的黑客,而且逻辑很差,但我不知道有更好的方法。

这是代码

var xmlHttp
var layername
var url

function update(layer, part, pk, query) {
    alert ("update");
    if (part=="1") {
        alert ("part 1");
        url = "get_auction.php?cmd=GetAuctionData&pk="+pk+"&sid="+Math.random()
    } else if (part=="2") {
        alert ("part 2");
        url = "get_records.php?cmd=GetRecordSet&query="+query+"&sid="+Math.random()
    }
    xmlHttp=GetXmlHttpObject()
    if(xmlHttp==null) {
        alert("Your browser is not supported?")
    }
    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
            document.getElementById(layer).innerHTML=xmlHttp.responseText
        } else if (xmlHttp.readyState==1 || xmlHttp.readyState=="loading") {
            document.getElementById(layer).innerHTML="loading"
        }
    };
    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
}

function GetXmlHttpObject() {
    var xmlHttp=null;
    try {
        xmlHttp = new XMLHttpRequest();
    } catch (e) {
        try {
            xmlHttp =new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
    }
    return xmlHttp;
}

function makewindows() {
    child1 = window.open ("about:blank");
    child1.document.write(<?php echo htmlspecialchars(json_encode($row2["ARTICLE_DESC"]), ENT_QUOTES); ?>));
    child1.document.close(); 
}

我将警报语句放入更新函数中,但没有显示任何警报语句,表明更新函数从未被调用?

我不想,也不能使用框架,也没有权限使用 firebug,所以请不要建议这些事情。我了解它们并尽可能使用它们。

我还想知道从 makewindows() 中调用 php 是否比让 makewindows 仅接受参数更可取。每种方法有什么优点或缺点吗?

尝试调用该函数时似乎出现错误,这就是我在 PHP 中执行此操作的方式:

echo "<li><a href='#' onclick=update('Layer3','2','0','hello')'>Link 1</a></li>" . 

这使得这个 html 应该没问题?"\n";

<li><a href='#' onclick='update('Layer3','2','0','hello')'>Link 1</a></li>

编辑:我采纳了 tester101 的建议并将其更改为:

echo '<li><a href="#" onclick="update(\'Layer3\',\'2\',\'0\',\'hello\')">Link 1</a></li>' . "\n"; 

这仍然给出一个错误。我可能最终会使用汤姆斯答案,但想知道为什么这不起作用。

最佳答案

如果您可以使用 Firefox 并重现错误,我强烈建议使用 Firebug因为它真的很容易使用和单步执行脚本、设置断点等。此外,您不必使用“警报”语句,您可以使用诸如 console.info("unexpected value x=%o", some_object); 之类的东西; 它会将一个值记录到控制台(包括第 # 行),您可以稍后检查该值,而无需中断脚本。

编辑:事实上,如果您在服务器上使用 PHP,则可以使用 FirePHP帮助在客户端进行调试。

关于php - JavaScript 不工作,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359328/

相关文章:

javascript - 使用 AngularJS 更新复选框单击上的单个 MySQL 记录

javascript - Bootstrap 日期时间选择器显示从下个月开始的一周

javascript - 使用 JS 切换显示/隐藏

javascript - 如何使用 RegEx 从 npm install 命令获取应用程序名称?

php - Codeigniter Ajax 出现 404 错误

php - 在 Magento 上找不到基表或 View

javascript - Ajax提交由PHP do-while循环动态生成的表单

php - 谷歌分析兴趣API

jquery ajax 在 Google Chrome 中响应缓慢

javascript - 如何在不创建单独的jsp的情况下刷新表?