用jquery动态获取一些tr值,并用ajax将它们传递给php

时间:2011-07-12 13:02:36

标签: javascript jquery

我想按下“删除”按钮时将一些td值传递给ajax调用 我怎么能用jquery做到这一点?

<table>
       <tr>
          <td class="datao">first column</td>
          <td class="data1">first column</td>
          <td class="data2">first column</td>
          <td colspan="2"></td>
       </tr>
       <tr>
          <td class="datao">xzczxc</td>
          <td class="data1">xzczxc</td>
          <td class="data2">xzczxc</td>
          <td>   
             <input type="button" class="deleteRow" value="Delete" />
          </td>
       </tr>
       <tr>
          <td class="datao">xzczxc</td>
          <td class="data1">xzczxc</td>
          <td class="data2">xzczxc</td>
          <td>   
             <input type="button" class="deleteRow" value="Delete" />
          </td>
       </tr>
       <tr>
          <td class="datao">xzczxc</td>
          <td class="data1">xzczxc</td>
          <td class="data2">xzczxc</td>
          <td>   
             <input type="button" class="deleteRow" value="Delete" />
          </td>
       </tr>
       <tr>
          <td class="datao">xzczxc</td>
          <td class="data1">xzczxc</td>
          <td class="data2">xzczxc</td>
          <td>   
             <input type="button" class="deleteRow" value="Delete" />
          </td>
       </tr>
       <tr>
          <td class="datao">xzczxc</td>
          <td class="data1">xzczxc</td>
          <td class="data2">xzczxc</td>
          <td>   
             <input type="button" class="deleteRow" value="Delete" />
          </td>
       </tr>
</table>

更新: 假设我想在's。

中获取input type = text的值

HTML示例:

 <table>
           <tr>
              <td class="datao">
                 <select class="someclass">
                    <option value="asdsa">somevalue</option>
                 </select>
              </td>
              <td class="datao">
                 <input type="text" value="eqw" />
              </td>
              <td class="datao">
                 <input type="text" value="gfg" />
              </td>
              <td>   
                 <input type="button" class="deleteRow" value="Delete" />
              </td>
           </tr>
           <tr>
              <td class="datao">
                 <select class="someclass">
                    <option value="wq">somevalue</option>
                 </select>
              </td>
              <td class="datao">
                 <input type="text" value="hfd" />
              </td>
              <td class="datao">
                 <input type="text" value="vcv" />
              </td>
              <td>   
                 <input type="button" class="deleteRow" value="Delete" />
              </td>
           </tr>
           <tr>
              <td class="datao">
                 <select class="someclass">
                    <option value="cva">somevalue</option>
                 </select>
              </td>
              <td class="datao">
                 <input type="text" value="ewd" />
              </td>
              <td class="datao">
                 <input type="text" value="asad" />
              </td>
              <td>   
                 <input type="button" class="deleteRow" value="Delete" />
              </td>
           </tr>
 </table>

jquery的代码:

假设我想要获取每行数据的选择值...

$('input.deleteRow').live('click', function() {
        var values = [];

        $(this).closest('tr').find("select").each(function() {
            values.push($(this).attr('value'));
        });

        //Confirm 
        //the ok stores true or false returned by confirm!
        var ok = confirm("Are you sure...?");

        //testing for true
        if(ok){
            $.post("phpscript.php", { someName:values[0] }, function(data) {
                if(data == '1'){
                    alert("something");
                    location.reload();              
                }
                else
                    alert("something else, error probably");
            });
        }

    });

如果你想选择并输入type =“text”,只需要:... find(“select,input [type = text]”)...

这是我对社区的贡献。 无论如何,我想找到一种优雅的方式将数据发送到php脚本,并提供帮助。

2 个答案:

答案 0 :(得分:1)

可以使用http://www.datatables.net/ - 比自己编程更容易吗?

答案 1 :(得分:1)

您需要将事件处理程序附加到每个输入按钮,这些按钮将转到按钮的父级(<td>),然后转到该节点的兄弟级别(其他<td>)。对于其中的每一个,您将获得相应<td>的内部HTML,然后找出将这些全部配对的方法(可能是分隔的字符串?)

$('input.deleteRow').live('click', function() {

    var returnString = '';

    $(this).parent().siblings().each(function() {
        returnString += $(this).html();
    });

    $.ajax({
        url: 'somephpurlhere.php',
        data: returnString
    }).success(function() {
        //dosomething
    }).fail(function() {
        //dosomethingelse
    });

});

您需要修改.ajax调用以满足您的需求,因为您尚未表达处理响应的方式等。

如果要检查给定的DOM元素是否包含td或输入,则可以按如下方式替换.each功能:

$(this).parent().siblings().each(function() {
    if ($(this).find('td').length > 0)
        resultString += $(this).find('td').html();
    else if ($(this).find('input').length > 0)
        resultString += $(this).find('input').val();
    else
        resultString += $(this).html();
});