表单分段值'每个'循环ajax请求

时间:2013-08-22 13:20:35

标签: html ajax jquery

我有一个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

1 个答案:

答案 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,这可能是指字符串而不是表单。