【问题标题】:External PHP data not passing through AJAX外部 PHP 数据不通过 AJAX
【发布时间】:2013-09-25 14:41:56
【问题描述】:

我正在使用 PHP 和 AJAX 创建一个简单的在线预订系统。

目前的布局是: 每个预订都会获取一个预设的项目列表,然后用户可以添加他们需要的其他项目。 为此,我设置了一个 AJAX 按钮,每次单击该按钮时都会调用一个新的下拉列表。 (这意味着一个页面可以有 1 个额外的项目,甚至 20 个,这取决于他们需要多少。)

一旦选择了其他项目,他们就可以提交表单,并将被引导到一个确认页面,该页面旨在列出他们选择的内容。

问题: 任何数据都不会从任何添加的下拉列表中执行。

我在第 1 页的 AJAX 脚本和 php 代码是:

<script>
function changeIt()
{
$.ajax({
type: "POST",
url: "details.php"
}).done(function( result ) {
$("#msg1").append( "" +result);
});
}   
</script>

<form name ="addequip" id="addequip" action="confirmbooking.php" method="post">
<input type='button' value="Add Item" onClick="changeIt()"/>
<div id="msg1"></div>
<input type='submit' value='submit'/>

details.php:

<?php
require_once("dbconn.php");
$sql = "SELECT REFERENCE, DESCRIPTION FROM descEquip";
$result = mysql_query($sql,$conn);
?>

<select name="equip">
<?php while ($row = mysql_fetch_array($result)) { ?>
<option value="<?php echo $row["REFERENCE"];?>"><?php echo $row["DESCRIPTION"];?></option><?php } ?>
</select>

最后我的确认页面是:

<?php $item = $_POST['equip']; ?>
<?php echo $item ?>

我不太确定是否需要向 AJAX 脚本添加一些内容以使其按预期工作,或者是否需要在 details.php 中更改某些内容? (我对 AJAX 很陌生)

我查看了之前的问题“passing form data to mySQL through AJAX”,但无法让它为我工作。

最后,对于附加列表(当需要超过 1 个项目时),我是否需要一个功能来说明每个装备列表具有不同的名称?赞name="equip&lt;?php echo $i ?&gt; where $i = 1++;

任何提示或示例将不胜感激, 谢谢。

【问题讨论】:

  • 您的$.ajax() 没有data: 参数,因此您只是触发了一个不包含任何表单数据的http 请求。
  • 您确认您的 php 正在输出 db 结果吗?此外,如果您想从您的 php 脚本中提取数据,您需要获取而不是发布。此外,您的 dataType 应设置为 HTML
  • 我已经确认我的 php 正在输出一个 db 结果。说到 AJAX,我一头雾水。

标签: javascript php jquery mysql ajax


【解决方案1】:

永远不要假设一切都会如你所愿 - 检查你的代码是否有问题:

var jqxhr = $.ajax(
    {
        type: 'GET',
        async: false,
        url: 'details.php',
        success: function(data, textStatus /* always 'success'  */, jqXHR)
                 {
                    // ok if we are here it means that communication between browser and apache was successful

                    alert( 'on_ajax_success data=[' + data + ']  status=[' + textStatus + ']' );
                    $("#msg1").innerHTML( result );
                 }
        ,
        error: function(jqXHR, textStatus, errorThrown)
                {
                    alert( 'ERROR: [operation failed]' );
                }
    });

此外 - 使用安装了 Firebug 的 Firefox,这样您就可以看到您的 ajax 查询/响应。

【讨论】:

  • 我想我自己都搞糊涂了。所以我每次按下“添加项目”按钮时都会收到一条成功消息,但是当我按下提交时仍然没有任何消息?您的代码要添加到我已经存在的函数中吗?
  • 好的,在阅读/查看更多教程后,我对它的理解好多了,但是当我点击提交按钮时,我仍然对如何获取信息以转到下一页感到困惑
猜你喜欢
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多