【问题标题】:$.ajax not working when called from onclick从 onclick 调用时 $.ajax 不起作用
【发布时间】:2012-04-10 17:28:13
【问题描述】:

当我从控制台调用 AA.sendRequest() 时,我的代码工作正常,但当我从 onclick 调用它时却不行:

<a href="/b/Technology" onclick="AA.sendRequest()">Technology</a>

由于某种原因,它进入了错误函数。

textStatus = "错误" errorThrown = ""


这是一个非常基本的测试:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="assets/AA.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<a href="login.php" onclick="AA.sendRequest('id');">login</a>
</body>
</html>

Javascript:

// JavaScript Document

var AA;
AA = (function() {
    function AA() {}




    // Request functions
    function sendRequest(){}
    AA.sendRequest = function(id){


        $.ajax({
            url: "login.php",
            type: "GET",
            dataType: "text",

            success: function(data){
                alert("yay");


            },
            error: function(jqXHR, textStatus, errorThrown){
                alert("status:"+textStatus+", "+errorThrown);
            }
        });
        return false;
    }


    return AA;
})();

【问题讨论】:

  • 你的通话中的“id”参数在哪里?
  • var AA 定义在哪里?确保它在 html 标记上方的全局范围内。
  • id 是一个工件,我从那里简化了脚本以更好地调试它。
  • AA被定义为函数调用
  • 对我来说很好。我唯一的问题是 AA 没有定义,所以当你定义 AA.sendRequest 时 javascript 会抛出一个错误。

标签: javascript jquery ajax


【解决方案1】:

如果没有上下文,很难确定您要完成什么。但是,以下应该有效:

var AA = {};
AA.sendRequest = function(id){
  $.ajax({
    url: "/ajaxPage/b/Technology",
    type: "GET",
    dataType: "text",
    success: function(data){
      alert("yay");
    },
    error: function(error){
      alert(error);
    }
  });
  return false;
};

在您的 HTML 中:

<a href="/b/Technology" onclick="AA.sendRequest('someId')">Technology</a>

【讨论】:

  • 我在简化脚本时错过了 id。这不是问题。这真的适合你吗?你运行的是什么浏览器?
  • @LeeJacobson 您是否收到“未定义”错误?如果单击链接后没有出现错误,则在 sendRequest 函数中的 $.ajax 调用之前放置一个警报,以查看它是否正在执行。
  • 如果我使用:error: function(jqXHR, textStatus, errorThrown) testStatus 是“error”,没有 errorThrown
  • @LeeJacobson 那么你的 JavaScript 函数就可以工作了。您需要检查服务器端日志以获取指示返回错误原因的堆栈跟踪,或调试调用。
  • 服务器日志表明请求甚至没有到达服务器。它甚至在请求发送之前就因为某种原因出错了。
猜你喜欢
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多