PHP循环中来自JQuery代码的AJAX请求
Posted
技术标签:
【中文标题】PHP循环中来自JQuery代码的AJAX请求【英文标题】:AJAX Request from JQuery Code within PHP Loop 【发布时间】:2013-11-09 01:33:24 【问题描述】:我是一个长期的潜伏者,第一次在 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$itemNumSelect option:selected").change(function()
var sel = jQuery("#Item$itemNumSelect option:selected").text());
jQuery.ajax(
type: "POST",
url: "sizearray.php",
data: category: "Cold_Sandwiches" , selection: sel ,
dataType: "text"
).done(function(result)
jQuery("#Item$itemNumSize").html(result);
);
jQuery("#Item$itemNumSize").show();
);
【问题讨论】:
你为什么要逃避这么多东西?? 您应该尝试使用PHP multiline string 来处理所有这些问题。 你能在浏览器中获取选择值的那一行设置一个断点吗?更改事件是否触发? Ixe,我实际上已经完全忘记了多行字符串,我很高兴你提出来了。我将用 EOD-ready 的东西替换我的乱七八糟的代码。我首先避免它的原因是因为我不知道你可以在其中调用 PHP 变量。我想你知道的越多。 单引号也可以避免转义(而且你不需要双引号,因为你只是在附加变量) 【参考方案1】:所有这些台词看起来都很有趣。我不了解 PHP,但在我看来,您的引号不匹配。
\$(\"#Item" . $itemNum . "Select option:selected\").change(function()
\$(\"#Item" . $itemNum . "Size\").html(result);
\$(\"#Item" . $itemNum . "Size\").show();
【讨论】:
它看起来如此奇怪的原因是,当您编写 PHP echo 语句时,它看起来像这样: echo "Some words and stuff" 并且要在该语句中包含引号,您需要执行此 echo “一些“单词”之类的东西”当你在 PHP 回显语句中使用 JQuery 时,我会让你想象一下,转义引号会在多大程度上混淆语法。它变得令人讨厌。【参考方案2】:或者您可以在客户端使用 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 格式从服务器请求数据并使用数据填充控件。
【讨论】:
我尝试了你的建议jQuery("#Item$itemNumSelect").live('change',function()
,但它并没有解决我的问题。难道sel
这个变量不正确?
$itemNum 必须是一个固定的或静态的数字,或者您的所有选择控件必须具有一个通用属性,您可以将其用作客户端的选择器。再次检查我的帖子,我编辑了它以上是关于PHP循环中来自JQuery代码的AJAX请求的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Firefox 中解码来自 jQuery $.ajax 请求的 XML 响应
使用 ajax、jquery 和 PHP 从数据库更新图像不起作用