0

我有一个 html 表单来从用户那里获取信息。我对这些信息进行分段,以便从每个分段启动一个 ajax 请求(分段是在“>”字符之后完成的)。但是,当我不使用“每个”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
4

1 回答 1

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循环中使用了可能引用字符串而不是表单的循环。

于 2013-08-22T14:13:20.257 回答