我已经尽可能地使用下面的脚本,但我不能为我的生活解决为什么页面ID没有被发送到PHP脚本。
目前我正在使用PHP _GET命令抓取“index.php?id = 12”,然后将其插入到Javascript变量中。我设置了第二个变量,包括它,以及纬度和经度的字符串。当我测试字符串是通过警报创建的时,字符串看起来应该是它应该的样子。
在我的PHP脚本中,我只获取经度和纬度数据,但从不获取id数据。在这里阅读了许多其他线程后,我相信Ajax期待一个对象,并且该字符串是意外的。不幸的是,我不知道如何纠正这个问题。
我的Javascript如下:
function GeoSuccess(position) {
var id = <?php echo $id ?>;
var dataString = '?id='+id+'&action=geolocation&latitude='+position.coords.latitude+'&longitude='+position.coords.longitude;
$.ajax({
url: 'search.php',
type: 'GET',
data: dataString,
success: function (msg) {
$('div#search-results').html(msg);
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
alert('Error submitting request.');
}
});
}
答案 0 :(得分:3)
使用
'id='+id+....
而不是
'?id='+id+....
答案 1 :(得分:1)
如果你想要一个对象而不是一个字符串,这将有效:
var data = {
id: id,
action: 'geolocation',
latitude: position.coords.latitude,
longitude: position.coords.longitude,
}
$.ajax({
url: 'search.php',
type: 'GET',
data: data,
// .... snip
我不确定,但我不认为'?'在您的dataString中是预期的。删除它也可以。
答案 2 :(得分:0)
尝试将对象分配给ajax数据参数
data: {
id : <?php echo $id; ?>,
action : "",
latitude : position.coords.latitude,
longitude : position.coords.longitude
}
答案 3 :(得分:0)
function GeoSuccess(position) {
var id = <?php echo $id ?>;
var dataObject = new Object();
dataObject.id=id;
dataObject.action=geolocation;
dataObject.altitude=position.coords.latitude;
dataObject.longitude=position.coords.longitude;
$.ajax({
url: 'search.php',
type: 'POST',
data: dataObject ,
success: function (msg) {
$('div#search-results').html(msg);
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
alert('Error submitting request.');
}
});
}
试试这个......。
答案 4 :(得分:0)
您可以将dataString添加到网址
url: 'search.php' + dataString,
或者你可以删除前导'?'来自dataString
var dataString = 'id='+id+'&action=geolocation&latitude='+position.coords.latitude+'&longitude='+position.coords.longitude;
通过这种方式,您将获得身份证。