我正在尝试对同一页面进行异步调用,但由于某些原因,异步调用没有进行,因此出现"userinfo“未定义错误!有没有人能告诉我我做错了什么,谢谢!
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$( document ).ready(function() {
//getting location of the user and assigning it to the variable
$.get("http://ipinfo.io", function (response) {
var usercity=response.city;
console.log(usercity);
$.ajax({
//no need to provide url since we are making async call on the same page
type: "post",
data: {cityinfo:usercity},
});
}, "jsonp");
});
</script>
<?php
session_start();
$usercity=$_POST['cityinfo'];
echo $usercity;
?>
发布于 2019-01-04 06:39:13
首先,向PHP页面发出常规请求。$_POST['cityinfo']
在这个阶段是未定义的,因为您没有设置它。该页面包含一条错误消息,告诉您这一点。
其次,向ipinfo.io发出JSONP请求,并在收到响应时调用回调函数。
第三,向PHP页面发出第二个HTTP请求。这一次,您定义了$_POST['cityinfo']
。您根本没有对响应执行任何操作的success
处理程序,因此,尽管设置了$_POST['cityinfo'];
,但您看不到任何效果(除非您使用developer tools Network选项卡来检查响应本身)。
需要注意的是,这是对同一URL的第二个不同请求。JavaScript不会回到过去,也不会在前一个请求中设置$_POST['cityinfo'];
变量(它是对前一个请求的响应,仍然显示在浏览器窗口中)。
https://stackoverflow.com/questions/54030713
复制相似问题