邮寄请求的一些问题

时间:2011-08-02 15:46:29

标签: jquery

我仍然遇到一些jQuery问题。如果我有这样的HTML:

<form method="post">
    <textarea id="id_content" rows="10" cols="40" name="content"></textarea>
    <input id="yes" type="submit" value="submit">
</form>
<form method="post">
    <textarea id="id_content" rows="10" cols="40" name="content"></textarea>
    <input id="no" type="submit" value="submit">
</form>
<form method="post">
    <textarea id="id_content" rows="10" cols="40" name="content"></textarea>
    <input id="question" type="submit" value="submit">
</form>

为什么我不能用这个jQuery代码成功发布请求?

$(function(){
    $('input').live('click', function(){
        if ($(this).attr('id') == 'yes'){
            var url = 'www.example.com/add_yes/' 
        } if ($(this).attr('id') == 'no'){
            var url = 'www.example.com/add_no/' 
        } else {
            var url = 'www.example.com/add_question/'} 

    var form = $('.' + $(this).attr('id'))
    var textarea = form.$('texarea[name="content"]').text().serialize()

    $.ajax({
    type: 'POST',
    url: url,
    data: textarea,
    success: succes,         
    dataType: 'json'
    })})})

以下是jsfiddle http://jsfiddle.net/

中的代码

3 个答案:

答案 0 :(得分:1)

替换:

var textarea = form.$('texarea[name="content"]').text().serialize()

with:

var textarea = form.find('texarea[name="content"]').text()

答案 1 :(得分:1)

您的html /代码存在许多问题。

1)此行var form = $('.' + $(this).attr('id'))正在页面上查找一个元素,其类名与所单击的输入按钮的id相匹配。由于您没有包含.no.yes.question类的元素,因此无法找到任何内容

2)下一行var textarea = form.$('texarea[name="content"]')...错误地尝试以不正确的方式使用此元素。我怀疑你真正打算做的是$('texarea[name="content"]',form)...form.find('texarea[name="content"]')两者都会在上面发现的形式中找到一个textarea。

3)textarea在您的选择器中输错了texarea

答案 2 :(得分:1)

为我使用class ='content'

的所有文字区域添加一个唯一的课程                                               
        <form method="post">
            <textarea id="id_content" rows="10" cols="40" class="content" name="content"></textarea>
            <input id="no" type="submit" value="submit">
        </form>
        <form method="post">
            <textarea id="id_content" rows="10" cols="40" class="content" name="content"></textarea>
            <input id="question" type="submit" value="submit">
        </form>        

然后使用这个jquery代码,这将解决你的问题

    $(function(){        
          $('input').live('click', function(){
               if ($(this).attr('id') == 'yes'){
                    var url = 'www.example.com/add_yes/' 
               } if ($(this).attr('id') == 'no'){
                    var url = 'www.example.com/add_no/' 
               } else {
                    var url = 'www.example.com/add_question/'} 

          var textarea = $(this).parent().find(".content").val();

               $.ajax({
                 type: 'POST',
                 url: url,
                 data: textarea,
                 success: succes,         
                 dataType: 'json'
               });
         });
  });