通过 $.ajax() 使用 GET 将数据存储到数据库
Store data to database using GET via $.ajax()
我想使用 $.ajax()
将一些 GET
保存到我的数据库,但数据只有 returns 为空。这是我的代码:
$.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'];
}
仅此代码 returns --
。我错过了什么?
更新
Chrome中开发者工具的网络选项卡中的link显示如下: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=
)。但是当我用 var_dump($_GET)
替换 echo $_GET['f']...
时,它会打印以下内容:
array(1) {
["data"]=>
string(0) ""
}
为什么我无法使用上面的代码从 $_GET['f']
、$_GET['c']
和 $_GET['a']
获取数据?
你的 JS 应该是:
$.ajax({
url: "file.php",
type: "GET",
data: ...
});
您不需要额外的 ?data=
作为 URL 的一部分。这将由 jQuery 为您生成。有了它,您将覆盖您的 GET 请求。所以,从你发布的 URL 可以看出,你发布了一个没有值的键 "data",所以你的 vardump 确实向你显示了一个没有值的键 "data"。
您的 PHP 应该是:
if(isset($_GET['f']) && isset($_GET['c']) && isset($_GET['a'])) {
echo $_GET['f'].' - '.$_GET['c'].' - '.$_GET['a'];
}
"data" 只是 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']);
}
我想使用 $.ajax()
将一些 GET
保存到我的数据库,但数据只有 returns 为空。这是我的代码:
$.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'];
}
仅此代码 returns --
。我错过了什么?
更新
Chrome中开发者工具的网络选项卡中的link显示如下: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=
)。但是当我用 var_dump($_GET)
替换 echo $_GET['f']...
时,它会打印以下内容:
array(1) {
["data"]=>
string(0) ""
}
为什么我无法使用上面的代码从 $_GET['f']
、$_GET['c']
和 $_GET['a']
获取数据?
你的 JS 应该是:
$.ajax({
url: "file.php",
type: "GET",
data: ...
});
您不需要额外的 ?data=
作为 URL 的一部分。这将由 jQuery 为您生成。有了它,您将覆盖您的 GET 请求。所以,从你发布的 URL 可以看出,你发布了一个没有值的键 "data",所以你的 vardump 确实向你显示了一个没有值的键 "data"。
您的 PHP 应该是:
if(isset($_GET['f']) && isset($_GET['c']) && isset($_GET['a'])) {
echo $_GET['f'].' - '.$_GET['c'].' - '.$_GET['a'];
}
"data" 只是 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']);
}