Jquery 完全基于第一个Ajax请求的结果发送Ajax请求
我对jQuery并不感到惊讶,但是我正在构建一个系统,用户可以从一个静态类别中进行选择,该类别启动一个Ajax请求,特别是一个.load,它在第二个SELECT语句中返回数据 这完全符合我的目的。我遇到的困难是选择第二条SELECT语句来运行第二个Ajax请求。第二个请求根本没有输出,它似乎没有触发 请让我知道如何改进jQuery,以及如何让用户在第二个选择框中选择第三个选择框 我的Ajax:Jquery 完全基于第一个Ajax请求的结果发送Ajax请求,jquery,ajax,forms,Jquery,Ajax,Forms,我对jQuery并不感到惊讶,但是我正在构建一个系统,用户可以从一个静态类别中进行选择,该类别启动一个Ajax请求,特别是一个.load,它在第二个SELECT语句中返回数据 这完全符合我的目的。我遇到的困难是选择第二条SELECT语句来运行第二个Ajax请求。第二个请求根本没有输出,它似乎没有触发 请让我知道如何改进jQuery,以及如何让用户在第二个选择框中选择第三个选择框 我的Ajax: $(document).ready(function() { $("#squery").change
$(document).ready(function() {
$("#squery").change(function(e) {
SelectText = $("#squery").val();
PassData = $("#pdata").html();
if (SelectText == ""){
$("#teamMailer").slideUp();
}
else {
$("#teamMailer").load("mailerAjax.php", { SelectInput: SelectText, PermissionData: PassData });
$("#teamMailer").slideDown();
}
});
/**
THE BELOW DOES NOT APPEAR TO WORK OR FIRE AT ALL.
**/
$("#S_part2").change(function(e) {
Part2Text = $("#S_part2").val();
PassData = $("#pdata").html();
if (Part2Text == ""){
$("#teamMailer2").slideUp();
}
else {
$("#teamMailer2").load("../includes/mailerAjax2.php", { SelectInput2: Part2Text, PermissionData: PassData }, function( response, status, xhr ) {
if ( status == "error" ) {
var msg = "Sorry but there was an error: ";
$( "#error" ).html( msg + xhr.status + " " + xhr.statusText );
}
});
$("#teamMailer2").slideDown();
}
});
});
一些注意事项:
mailerAjax.php文件包含完整的表单选择函数:
SELECT id="S_part2"
options
options
options
/SELECT
第一个Ajax的输出非常完美,但是第二个Ajax似乎没有启动,而且似乎没有返回。甚至一个错误都没有
我的HTML:
<div class="...">Select Recipient(s):</div>
<div class="...">
<select name="Target" tabindex="1" required id="squery">
<option value="" selected>Choose...</option>
<option value="I">Individuals...</option>
<option value="T">A Team...</option>
<option value="G">A Group...</option>
</select>
</div>
</div>
<div class="..." id="teamMailer">
</div>
<div class="..." id="teamMailer2">
</div>
所以,1我喜欢jQuery的.load函数整洁的使用,但是我是否需要使用另一个函数,比如.post,我真的想避免数据传输
2忽略这一点
3我知道一个基本的解决方案可能是在基本HTML中不填充选择框,但是它看起来非常整洁,整个选择框只在填充后出现
那么,有没有一种方法可以从第二个选择框的Ajax返回中获取第三个选择框的Ajax返回
任何关于如何处理这个问题的指导,非常感谢
M1.加载是一个GET请求
2号
3您的问题是无法绑定不存在的元素。我假设S_part2是从您的第一个请求加载的,因此您需要在更高级别进行绑定,并在事件冒泡时让事件委派处理它
因此,与此相反:
$("#S_part2").change(function(e) { ...
试试这个:
$("#teamMailer").on("change","#S_part2", function(e) { ...
这会将处理程序附加到确实存在的I-Aspect父div,并添加一个筛选器,以便它仅在事件的原始源与id S_part2匹配时执行。谢谢。我自己也被弄糊涂了。加载为firebug声明它是一个GET请求,但数据在PHP中作为$_POST['data']处理。GET选项是空的,它可以工作,但在理想情况下,我更喜欢POST而不是GET,但它不是太重要。。。RE:处理程序-感谢您提供了关于形成请求的指针,现在您已经指出了这一点,这似乎很明显,我将尝试一下。。。ps-我的第二季度抱歉,这是一个愚蠢的问题:-/谢谢你,马特,这正是我想要的,为指针干杯@马丁:不确定你的GET vs POST有什么问题。按照惯例,这听起来应该是一个GET请求。至于为什么它在PHP端显示为$_POST,我不知道,但PHP很奇怪。是一个GET请求,firebug确认了这一点。