【问题标题】:Error while calling a Javascript function on HTML link click在 HTML 链接单击上调用 Javascript 函数时出错
【发布时间】:2014-07-24 15:49:14
【问题描述】:

我有一个文本框、一个 HTML 链接和一个 JavaScript 函数。

JavaScript 函数用于获取客户端机器的 IP 地址。当我点击链接时,我试图调用这个函数并在我的文本框中显示结果。但是,我没有得到结果。

这是我遇到的错误。

Uncaught TypeError: Cannot read property 'ip' of undefined 

我的文本框:

<input type="text" id="txtmyip" name="txtmyip"readonly>

我的 HTML 链接:

<a href="#" onclick="DisplayIP();" >Show IP Address</a>

我的 Javascript 函数:

var script = document.createElement("script");
            script.type = "text/javascript";
            script.src = "http://www.telize.com/jsonip?callback=DisplayIP";
            document.getElementsByTagName("head")[0].appendChild(script);

            function DisplayIP(response)
            {
                document.getElementById("txtmyip").value = response.ip;
            }

【问题讨论】:

  • 其实response也是undefined

标签: javascript jquery html textbox ip-address


【解决方案1】:

您需要将JSONP请求函数和显示函数分开。例如:

function displayIP() {
    var script = document.createElement("script");
    script.src = "http://www.telize.com/jsonip?callback=populateIP";
    document.head.appendChild(script);    
}

function populateIP(response) {
    document.getElementById("txtmyip").value = response.ip;
}

演示:http://jsfiddle.net/Gr632/

【讨论】:

    【解决方案2】:

    函数DisplayIP 需要一个参数response,但是当使用onclick="DisplayIP()" 调用它时,不会为该参数传入任何值。所以它现在正在尝试读取 response.ip 以获取未定义的 response

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 2011-05-31
      • 2012-11-24
      • 2011-06-29
      • 1970-01-01
      • 2012-08-11
      • 2013-05-22
      • 2011-12-01
      • 1970-01-01
      相关资源
      最近更新 更多