我有一个html表单来从用户那里获取信息。我将此信息分段以从每个段启动ajax请求(分段在“>”字符之后完成)。但是,当我没有使用'each'jquery函数时(所以没有分段)ajax工作,但是每个jquery函数ajax都不起作用,循环不起作用。
这是我的javascript:
$(document).ready(function() {
$('#formu').on('submit', function() {
var sequence = $('#sequence').val().split(">"); // I segment here
$.each(sequence, function(k){ // for each segment I launch a request with the segment as argument
if (sequence[k].length != 0){
alert(sequence[k]);
$.ajax({
url:'run.py',
type:$(this).attr('method'),
data: {'sequence':">"+sequence[k]}, // the segment is given to python script
success: function(data){
$('#result').html(data);
}
});
} // enf if
//return false;
}); // end of each
}); // end of submit
}); // end of jquery
这是我的HTML:
我的页面<form method="post" id="formu" >
<textarea id="sequence" name="sequence" cols="80" rows="10"></textarea>
<br/>
<input type="submit" value="Submit">
</form>
<div id="result">
</div>
输入示例:
>mysequence 1
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>mysequence 2
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
>mysequence 3
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
答案 0 :(得分:1)
使用jQuery.each
循环播放数组时。您将键,值对传递给函数。你正在做的是从密钥中获取值,而它已经通过了。没有必要这样做。此外,您还可以阻止事件执行其默认行为
false
$('#formu').on('submit', function(e) {
e.preventDefault(); // Prevent default behavior
var sequence = $('#sequence').val();
alert(sequence); // Check this value
sequence = sequence.split(">");
$.each(sequence, function(key, value){
alert(value); // Alert is better placed here so you know what 'value' is
if (value.length != 0){
$.ajax({
url : 'run.py',
type : $("#formo").attr('method'), // Replaced 'this' with your form as 'this' might mean something you are not expecting here
data : { 'sequence' : ">"+value },
success : function(data){
$('#result').html(data);
}
});
}
});
});
由于我们不知道您遇到错误,因此您的代码很难做到“一般性改进”。
我认为它不起作用的原因可能是因为您在this
循环中使用$.each
,这可能是指字符串而不是表单。