我正在尝试对同一页面进行异步调用,但是由于某种原因,没有进行异步调用,因此出现“ 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;
?>
答案 0 :(得分:1)
首先,您对PHP页面进行常规请求。 $_POST['cityinfo']
在此阶段未定义,因为您没有设置它。该页面包含一条错误消息告诉您。
第二,您向ipinfo.io发出JSONP请求,并在收到响应时调用回调函数。
第三,您向PHP页面发出第二个HTTP请求。这次您要定义$_POST['cityinfo']
。您根本没有success
处理程序来对响应进行任何操作,因此,尽管设置了$_POST['cityinfo'];
,您仍然看不到任何效果(除非您要使用开发人员工具的“网络”标签来检查响应本身)。
请务必注意,这是对同一URL的第二个不同请求。 JavaScript不会随着时间的流逝而在上一个请求中设置$_POST['cityinfo'];
变量(它是对前一个请求的响应,该变量仍显示在浏览器窗口中)。