通过$ .ajax()使用GET将数据存储到数据库

时间:2015-01-27 04:35:59

标签: php jquery ajax get

我想使用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+Tor‌​pshammar%2C+Sverigesend/datafile.php?data=)。但是当我用echo $_GET['f']...替换var_dump($_GET)时,它会打印以下内容:

array(1) {
  ["data"]=>
  string(0) ""
}

为什么我无法使用上述代码从$_GET['f']$_GET['c']$_GET['a']获取数据?

1 个答案:

答案 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']);
}