1

我在提交 AJAX 表单时遇到问题 - 使用本教程

我的表格在里面div#upform,当我试图通过$.ajax它提交任何一个时,它只提交第一个,这里是代码:

$(function() {  
    $(".button").click(function() {  
        var txt = $(".tekst#test").val();  
        var dataString = 'tekst='+ tekscior;

        $.ajax({  
            type: "POST",  
            url: "upload/base",  
            data: dataString,  
            success: function() {  
                $('#upform').html("<div id='message'></div>");  
                $('#message').html("<h2>described!</h2>")  
                    .append("<p>thanks!</p>")  
                    .hide()  
                    .fadeIn(1500, function() {  
                        $('#message').append("<img id='checkmark' src='http://artivia-dev2/i/check.png' />");  
                    });  
            }  
        });  
        return false; 
    });  
});  

这是我的表格:

<!-- ONLY THIS ONE IS SUBMITTED, EVEN WHEN I'M SUBMITTING THE SECOND ONE! -->
<div class="slidingDiv">
    <div id="upform">
        <form name="contact" action="">  
            <input type="text" value="TESTFORM" class="tekst" id="test">
            <input type="submit" name="submit" class="button" id="submit" value="Send" />
        <form>
    </div> 

    <div class="slidingDiv">
        <div id="upform">
            <form name="contact" action=""> 
                <input type="text" value="TESTFORM" class="tekst" id="test">
                <input type="submit" name="submit" class="button" id="submit" value="Send" />
            <form>
        </div> 

@@更新

问题,当我提交一个表单时 - 这很好 - 但是在提交这个表单后我想提交第二个表单时 - 数据已正确提交,但成功消息在两种表单中都刷新了,这就是我试图解决的问题使用,但它不起作用:

    $.ajax({  
          type: "POST",  
          url: "upload/base",  
          data: dataString,  
          success: function() {  

        upform.html("<div class='message'></div>");  

             var mess =  $(this).closest('.message');

             mess.html("<h2>Described</h2>")  
            .append("<p>Thanks!</p>")  
            .hide()  
            .fadeIn(1500, function() {  
            mess.append("<img id='checkmark' src='http://ar-dev2/i/check.png' />");  
            });  


          }  
        }); 
4

3 回答 3

6

首先,您不应该id对多个元素使用相同的元素。取而代之的是,您可以使用classor nameordata属性。

$(".button").click(function() {  

   var upform = $(this).closest('.upform'); // keep reference of upform

    var txt = $(this).prev(".tekst").val();  // this will retrieve the value of input
                                             // nearest to the button

    var dataString = 'tekst='+ tekscior;

    ......

    $.ajax({
      type: "POST",  
      url: "upload/base",  
      data: dataString,
      success: function() {
        upform.html();
        .....
      }
    });
});

选择器问题var txt = $(".tekst#test");

它已经从顶部开始搜索,当它找到匹配项时,它会停止旅程并返回值,你总是会得到第一个的值。如果你使用

var txt = $(".tekst");没有id,你将面临同样的问题。

于 2012-05-25T12:04:21.650 回答
2

ID 是单数的。您不能在页面上多次使用相同的 id!

如果要重复标识符,请使用名称。

于 2012-05-25T12:04:30.117 回答
0

您应该为这两种形式使用不同的 id。您的两个表单都具有相同的 idupform

于 2012-05-25T12:05:44.823 回答