来自 PHP 循环中 JQuery 代码的 AJAX 请求


AJAX Request from JQuery Code within PHP Loop

我是一个长期潜伏者,第一次在Stack Overflow上发海报(这在之前的很多编程项目中节省了我)。 我有一个独特的问题,我无法通过搜索网站找到,所以我将在这里描述它。

我正在创建一个在线订单,用户可以在其中选择食品类别。 该类别将发送到另一页代码,该代码页在数据库上运行查询,并将该类别中的所有项返回到名为 ItemXSelect 的下拉框(其中 X 是项编号)。 我没有遇到过这方面的麻烦。 但是,我在另一个 AJAX 查询中使用用户为 ItemXSelect 选择的值时遇到问题。具体来说,AJAX请求根本不发送(根据Firebug)。 我希望这是像语法错误这样简单的事情,但我已经这样做了好几天了。

下面的代码是写在 PHP Echo 语句中的 Jquery/AJAX,并且对某些字符进行了转义。 $itemNum确定 ItemXSelect 中 X 的值。

'$('"#Item" . $itemNum . "Select option:selected'").change(function() {
var sel = '$('"#Item" . $itemNum . "Select option:selected'").text());
    '$.ajax({
        type: '"POST'",
        url: '"sizearray.php'",
        data: { category: '"Cold_Sandwiches'" , selection: sel },
        dataType: '"text'"
    }).done(function(result) {
        '$('"#Item" . $itemNum . "Size'").html(result);
    }); 
    '$('"#Item" . $itemNum . "Size'").show();
});

这已经困扰了我好几天。我感谢任何可以帮助我找到这里问题的人(甚至至少尝试)。

===============================================================================================================================================================================================================================================================

==

编辑 1

感谢您的帮助,我通过将所有 JQuery 包装在 PHP EOD 语句中来清理代码。这样,我就不必逃避整件事。 下面是更新的代码。到目前为止,下面的建议还没有回答主要问题,但至少语法要整洁得多。

jQuery("#Item{$itemNum}Select option:selected").change(function() {
    var sel = jQuery("#Item{$itemNum}Select option:selected").text());
        jQuery.ajax({
            type: "POST",
            url: "sizearray.php",
            data: { category: "Cold_Sandwiches" , selection: sel },
            dataType: "text"
        }).done(function(result) {
            jQuery("#Item{$itemNum}Size").html(result);
        }); 
        jQuery("#Item{$itemNum}Size").show();
    });

所有这些台词看起来都很有趣。 我不懂PHP,但在我看来,你的引号不匹配。

'$('"#Item" . $itemNum . "Select option:selected'").change(function() {
'$('"#Item" . $itemNum . "Size'").html(result);
'$('"#Item" . $itemNum . "Size'").show();
或者

你可以在客户端使用jQuery进行实时绑定。

编辑

在你的 JavaScript 中

    $('select').change(function(){
       alert(this.options[this.selectedIndex].value);
    });

.HTML

<select>
   <option value="apple">Apple</option>
   <option value="orange">Orange</option>
</select>

因此,对于您添加的每个选择(通过 AJAX 动态添加),将自动绑定到该更改事件。

或者,您可以使用更复杂但不易出错的方法,即仅从 JSON 中的服务器请求数据,并使用数据填充控件。