在Ajax和PHP的查询中使用POST数据

时间:2014-08-17 12:10:35

标签: php mysql ajax

我有一个使用引导标签的网站,因此我尝试使用Ajax进行最少的刷新工作,但是我在使用mysql查询时遇到ajax帖子的问题直到页面得到了更新。

按下按钮后,Ajax会从该元素的ID中获取该值,并打开一个引导选项卡。这是我希望传递数据的地方,因此结果与用户选择的选项相关。

Modules.php

<a href="#parts" id="100" class="completed"></a>

(Ajax请求)

$(".completed").click(function() {

var element = $(this);
var ID = $(this).attr("id");
var dataString = 'id='+ ID;

$.ajax({
      cache: false,
      url: "includes/scripts/ajax/module_parts.php",
      type: "POST",
      datatype: "text",
      data: dataString,
      success: function (html) {
        $('#moduleNum').html(ID);
        console.log(ID);
      },
      error: function(data, errorThrown)
      {
          alert('request failed :'+errorThrown);
      }
 });

return false;

});

module_parts.php

$module_id = mysqli_real_escape_string($connection, $_POST['id']); 

echo $module_id;

$query = mysqli_query ($connection, "SELECT number FROM Modules WHERE number = '".$module_id."'");

我知道帖子工作正常,因为我尝试将帖子转换为会话,然后在刷新页面时显示数据。

将ID附加到html元素时,数据也会正确显示。

非常感谢, 扎克。

3 个答案:

答案 0 :(得分:0)

1)检查id是否通过post传递并通过module_parts获取。

2)我宁愿在通过ajax传递帖子数据时使用对象:

data: { id : ID }

3)检查ajax请求的好选择是使用Firebug(在控制台上),您可以检查请求详细信息而不回显。

答案 1 :(得分:0)

脚本中至少有两件事需要解决。

数据类型应该更改为dataType(文本不是jQuery&#39; s think&#34; types(xml,json,script或html)之一,因此必须正确拼写dataType。

您应该阻止锚点击事件的默认行为。

(".completed").click(function(e) {
    e.preventDefault
    ...

可能还有其他一些问题,但这两个问题突然出现了。

答案 2 :(得分:0)

正如旁注,我更喜欢用ajax shenanigans来做这件事。它可能对你有帮助......

改变锚元素:

<a href="#parts" id="100" class="completed" rel="completed">Click me</a>

使用Javascript:

ID = $(this).attr("id")

$('body').on('click', '[rel="completed"]', function() {
    $.post('includes/scripts/ajax/module_parts.php', { id : ID }, function(data) {
        $('#moduleNum').html(data); // data or ID ?
    }).fail(function() {
        alert('request failed');
    });
});

$('body').on部分有助于在插入新链接或按钮时保持脚本处于活动状态。它意味着身体标签内的任何东西,但你可以并且可能应该进一步缩小范围,例如周围的div。

我个人认为,这种方式更容易处理,特别是如果只有简单的数据来回传递。