我想使用GET
将一些$.ajax()
保存到我的数据库,但数据只返回空。这是我的代码:
$.ajax({
url: 'file.php?data=',
type: 'GET',
data: {
f: $('input[name="textfield"]').val(),
c: $('#coordinates').html(),
a: $('#address').html()
},
success: function(s) {
console.log(s);
}
});
PHP部分如下所示:
if(isset($_GET['data'])) {
echo $_GET['f'].' - '.$_GET['c'].' - '.$_GET['a'];
}
此代码仅返回--
。我错过了什么?
更新
Chrome中开发人员工具中网络标签的链接显示如下:http://.../send/data?f=hello&c=62.3875%2C+16.325556&a=KLOCKEN+520%2C+840+13+Torpshammar%2C+Sverige
(send/data
为file.php?data=
)。但是当我用echo $_GET['f']...
替换var_dump($_GET)
时,它会打印以下内容:
array(1) {
["data"]=>
string(0) ""
}
为什么我无法使用上述代码从$_GET['f']
,$_GET['c']
和$_GET['a']
获取数据?
答案 0 :(得分:0)
你的JS应该是:
$.ajax({
url: "file.php",
type: "GET",
data: ...
});
您不需要额外的?data=
作为网址的一部分。这将由jQuery为您生成。有了它,您将覆盖您的GET请求。因此,您可以从发布的网址中看到,您发布了一个密钥"数据"没有价值,所以你的vardump确实向你展示了一个关键数据"没有价值。
你的PHP应该是:
if(isset($_GET['f']) && isset($_GET['c']) && isset($_GET['a'])) {
echo $_GET['f'].' - '.$_GET['c'].' - '.$_GET['a'];
}
"数据"只是jQuery AJAX调用的参数 - 它实际上并不是你对象的名字。
您在评论中询问了JSON。现在,您的所有数据都是通过URL编码发送的。要发送JSON,一种方法是:
var submitPackage = {
f: JSON.stringify($('input[name="textfield"]').val()),
c: JSON.stringify($('#coordinates').html()),
a: JSON.stringify($('#address').html())
};
$.ajax({
url: "file.php",
type: "GET", //Is there a reason you care about doing GET versus POST (the default)?
data: submitPackage
});
然后你的PHP将是:
if(isset($_GET['f']) && isset($_GET['c']) && isset($_GET['a'])) {
echo json_decode($_GET['f']) . ' - ' . json_decode($_GET['c']) . ' - ' . json_decode($_GET['a']);
}