- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从当前用户获取IP,并将其与AJAX POST一起发送到PHP文件。这意味着我需要重新使用从 IP .getJSON 请求的响应中获得的变量。
脚本 1: 我在 snipt 上找到了这个方便的片段:
$.getJSON("http://jsonip.appspot.com?callback=?",function(data){
alert( "Your ip: " + data.ip);
});
脚本 1 工作并给出一个带有您的 IP 的警报对话框。
脚本 2:我将脚本 1 转换为:
var ipAppspot;
$.getJSON("http://jsonip.appspot.com?callback=?",function(data){
ipAppspot = data.ip;
});
alert(ipAppspot);
据我所知,不在变量前面声明'var'关键字使其可用于所有作用域,甚至在函数(全局)之外。虽然我猜如果脚本2可能不是跨域请求,那么它应该可以工作,但在这种情况下,它会给出一个带有'未定义'的警报对话框 所以这个例子不会工作
在 Stackoverflow 上还有另一个问题 jQuery-storing-ajax-response-into-global-variable它处理大约相同的问题。
并附加他们提供的解决方案,我得到以下结果。
脚本 3:从链接附加解决方案
// https://stackoverflow.com/questions/905298/jquery-storing-ajax-response-into-global-variable
var ipStore = (function(){
var ipAppspot;
$.getJSON("http://jsonip.appspot.com?callback=?",function(data){ipAppspot = data.ip;});
return {getIp : function()
{
if (ipAppspot) return ipAppspot;
// else show some error that it isn't loaded yet;
}};
})();
alert(ipStore.getIp());
脚本 3 给出与脚本 2 相同的问题,即'undefined'
问题:如何在以后的脚本中重复使用此变量?
编辑尼克·克拉弗斯的答案
var ipAppspot;
$.getJSON("http://jsonip.appspot.com?callback=?",function(data){
ipAppspot = data.ip;
myFunc();
});
function myFunc() {
alert(ipAppspot);
}
作者:Nick Craver,这确实有效。
function dataAuth(ip){
// collect data from form
var usernameRaw = $('#feg-username').val();
var passwordRaw = $('#feg-password').val();
// phpFile is our back-endgine
var phpFile = 'feg/back-endgine.php';
// construct the JSON in a variable
var dataConstruct = "username=" + usernameRaw + "&password=" + passwordRaw + "&ip=" + ip;
// start the AJAX
$.ajax({
type: "POST",
url: phpFile,
dataType: "json",
data: dataConstruct,
success: function(msg){
alert(msg);
}
});
} // END dataAuth
这是在我的应用程序中,我将这样使用该函数:
$('body').delegate('#feg-submit', 'click', function(){
$(this).attr('disabled','disabled');
console.log('submit button clicked');
dataAuth(ipAppspot);
return false
});
所以我会在那里使用 ipAppspot,稍后我需要 AJAX 请求的 IP,有什么方法可以实现它吗?
最佳答案
这不是范围问题,而是时间问题,让我们用一个确实有效的示例来说明它,如下所示:
var ipAppspot;
$.getJSON("http://jsonip.appspot.com?callback=?",function(data){
ipAppspot = data.ip;
myFunc();
});
function myFunc() {
alert(ipAppspot);
}
You can test it here 。请注意,它确实会提醒您的 IP,那么这里有什么不同呢?在填充变量之前,您不会请求变量(通过调用 alert()
),这发生在 $.getJSON()
中。打回来。因此范围不是问题,但事实上回调运行稍后(当响应返回时)是一个问题,只需启动需要来自回调,因为这是数据第一次可用。
这是一个更常见的示例,将数据直接传递到它所在的地方:
$.getJSON("http://jsonip.appspot.com?callback=?",function(data){
myFunc(data.ip);
});
function myFunc(ipAppspot) {
alert(ipAppspot);
}
或者,简短版本:
$.getJSON("http://jsonip.appspot.com?callback=?", myFunc);
function myFunc(ipAppspot) {
alert(ipAppspot);
}
关于jQuery(跨域).getJSON,将响应存储在可重用变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3858215/
我正在尝试获取客户端的 IP 地址和 GPS 坐标。使用 jQuery,我有这个: $.getJSON("http://jsonip.appspot.com/", function(data) {
这个问题已经有答案了: Why does JQuery.getJSON() have a success and a done function? (2 个回答) 已关闭 6 年前。 我想知道这两个代
所以首先,是的,我知道有几个答案,但没有一个能够解决我的问题。首先我将展示我的代码HTML: Shop
假设我有以下 JavaScript: (function($) { $.getJSON(url, function(data) { $.each(data.rows, function(i
是否可以使用 jQuery 在另一个 getJSON 请求中使用 getJSON 请求? 像这样: // Population the Requests List // jQuery AJAX cal
我有以下代码,该代码已针对此问题进行了简化。基本上我有一个循环,在每次迭代中调用 jquery getJSON 函数,调用 API 端点来获取一些天气数据。问题是,当 getJSON 请求被触发时,我
我有一个使用 getJSON 的函数,但它没有像我预期的那样工作。 function balbla(name, param) { $.getJSON("/blabla.json?nam
我有一段代码,例如: $.getJSON("http://mysite.org/polls/saveLanguageTest?url=" + escape(window.location.href)
我正在使用jquery.getJSON() ,但我不知道如何进行错误处理。这些是我需要处理的一些情况。 1)如果返回的数据为null怎么办? 2)如果返回的数据不能解析json怎么办? 3) 如果返回
我正在通过参与一个测试项目(包括 SubSonic 和 jQuery)来学习 asp.net mvc。 我遇到的问题是,每次我想要返回的不仅仅是简单字符串(例如 Json 对象)时,我都会遇到困难,因
执行跨域查询,如果运行的URL不可用(404),如何执行某个功能?我尝试这样的事情: $.getJSON({ url:'example.php?callback=?', statusCode: { 4
我在 jQuery 中搜索了相关主题,但没有找到任何方法来解决我的问题。 $(document).ready(function(){ $("#inputForm").submit(functi
当调用 yahoo Web 服务 (http://boss.yahooapis.com/ysearch) 返回数据集时,是否可以设置超时并在超时后退出例程? jQuery.getJSON("http:
我正在使用 jQuery getJSON() 函数。这个函数获取数据没有问题。但有时等待,等待等待......我的加载栏在页面中心显示加载加载。 所以 jQuery ajax() 函数有一个超时变量。
我有一个 html 代码: asd $('button').click( function() { $.getJSON('/schedule/test/', function
目标:我所追求的是每次在数据库中添加某些内容时(在 $.ajax 到 Submit_to_db.php 之后),从数据库获取数据并刷新 main.php(通过 draw_polygon 更明显)。 所
我已经阅读了文档并用谷歌搜索了此内容,但没有看到问题所在。我正在尝试从本地 json 文件获取一些数据。我已在 JSONLint 验证了响应数据 代码 $(document).ready(functi
我在json.getJSON方法上遇到麻烦。这是我当前的代码: var jqxhr = $.getJSON("http://127.0.0.1:5002?callback=?", function()
我需要进行跨域请求,并且 getJSON 有问题。 $.getJSON("http://usr:pwd@10.0.1.xx/cgi-bin/remote/request.cgi?m=json&r=gr
这个问题已经有答案了: How do I return the response from an asynchronous call? (42 个回答) 已关闭 8 年前。 这是我的问题 我有一个充满
我是一名优秀的程序员,十分优秀!