【问题标题】:Javascript/AJAX to PHP Page with either POST or GET使用 POST 或 GET 的 Javascript/AJAX 到 PHP 页面
【发布时间】:2013-07-21 21:49:22
【问题描述】:

我有一个带有 2 个值的 javascript 函数。我想将这些值发布到一个 PHP 页面,在那里我可以用它更新一个 mySQL 数据库。这是我到目前为止所拥有的,但它不起作用。

function updateDB(page1,page2)
{
alert("TEST");

$.ajax({
type: 'POST',
url: update.php,
page1: page1,
page2: page2
});
}

更新.php代码

 <?php include "connect.php"; 
 $page1 = $_POST['page1'];
 $page2 = $_POST['page2'];

 mysql_query("UPDATE `pages` SET `page1` = '$page1'");

 ?>

当我运行该函数时,我得到一个弹出窗口,但数据库没有更新。

有什么建议吗?我不介意使用 GET 或 POST。

提前致谢,

【问题讨论】:

  • 请显示来自update.php的代码,也可以尝试将网址放在单引号中,例如url: 'update.php'
  • 要检查它是否应该工作,请使用success: function() { alert("TEST"); }
  • 试过引用。依然没有。我已经放了update.php代码
  • 您的浏览器控制台是否出现任何错误?
  • 使用data: {page1:page1,page2:page2}

标签: php javascript ajax post get


【解决方案1】:

使用 jQuery 通过 POST 发送数据的正确方法是使用 data 属性。

一个例子是:

function updateDB(page1,page2)
{
    $.ajax({
        type: 'POST',
        url: 'update.php',
        data: {
            page1: page1,
            page2: page2
        },
        success: function() {
            window.location = "http://google.com";
        },
        cache: false
    });
}

我还添加了alert 成功,以及禁用缓存。即使这是 post,IE 也会将 post 请求缓存到已使用 get 请求的页面。

我强烈建议使用 MySQLi,或者至少转义查询:

include "connect.php"; 
$page1 = mysql_real_escape_string($_POST['page1']);
$page2 = mysql_real_escape_string($_POST['page2']);

mysql_query("UPDATE `pages` SET `page1` = '$page1'") or die(mysql_error());

如果您想在之后从 href 更改页面,只需执行以下操作:

<script>
    function linkme(_this) {
        window.event.preventDefault();
        //do all the code with ajax
        window.location = _this.href;
    }
</script>


<a href="http://google.com" onclick="linkme(this)">Clicky</a>

【讨论】:

  • 糟糕,我忘记了单引号。它是否适用于 url 属性周围的单引号?
  • 我收到成功消息。但我没有在 mySQL 数据库中得到更新。
  • 这里是mysql_query。你能检查一下吗? mysql_query("UPDATE pages SET page1 = '$page1'");
  • 是的,你需要.preventDefault(),然后点击`href 属性中的链接。
【解决方案2】:

您在字符串(update.php 和 page1/2)中忘记了 '',您的浏览器控制台应该对此进行处理:“未捕获的 ReferenceError:未定义更新”。在此处查看有关调试的更多信息:https://developers.google.com/chrome-developer-tools/docs/javascript-debugging

您还需要将数据放入数据对象中。

$.ajax({
type: 'POST',
url: 'update.php',
data: {
  page1: page1,
  page2: page2
}
}).done(function(data){
  alert('got:' + data);
});

在 jquery 文档中查看更多信息:http://api.jquery.com/jQuery.ajax/

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2016-12-20
    • 2018-11-21
    • 1970-01-01
    相关资源
    最近更新 更多