Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一般jquery结构问题_Php_Jquery_Ajax - Fatal编程技术网

Php 一般jquery结构问题

Php 一般jquery结构问题,php,jquery,ajax,Php,Jquery,Ajax,请看一下这个: $(function () { $("#add").click(function() { val = $('#add_lang').val(); val1 = $('#add_lang_level').val(); listitem_html = '<li>'; listitem_html += val + ' <strong>('+ val1 + '/100)</strong&g

请看一下这个:

$(function () {

    $("#add").click(function() {

       val = $('#add_lang').val();
       val1 = $('#add_lang_level').val();

       listitem_html = '<li>';
       listitem_html += val + ' <strong>('+ val1 + '/100)</strong>';
       $.ajax({ url: 'addremovelang.php', data: {addname: val,addlevel: val1}, type: 'post', success: function(output) { alert(output); }});
       listitem_html += '<a href="#" class="remove_lang">Remove</a>'
       listitem_html += '</li>';

        $('#langs').append(listitem_html);

    });

    $('.remove_lang').live('click', function(e) {

       e.preventDefault();
       $(this).parent().remove();
       $.ajax({ url: 'addremovelang.php', data: {delname: val}, type: 'post', success: function(output) { alert(output); }});

    });


});
$(函数(){
$(“#添加”)。单击(函数(){
val=$('#add_lang').val();
val1=$('add#lang_level').val();
listitem_html=“
  • ”; listitem_html+=val+'('+val1+'/100); $.ajax({url:'addremovelang.php',数据:{addname:val,addlevel:val1},键入:'post',成功:函数(输出){alert(输出);}}); listitem_html+=“” listitem_html+='
  • '; $('#langs').append(listitem_html); }); $('.remove_lang').live('click',函数(e){ e、 预防默认值(); $(this.parent().remove(); $.ajax({url:'addremovelang.php',数据:{delname:val},键入:'post',成功:函数(输出){alert(输出);}}); }); });
    当用户点击带有add id的按钮时,这个简单的jquery脚本将字符串添加到html列表中。此外,它会在每一行上放置一个remove链接,因此当用户点击remove时,它会触发函数remove_lang,并删除该字符串

    当用户添加一个字符串时,该文本来自一个文本字段,我将其存储在变量val中(如代码第5行所示)。然后我通过Ajax调用一个php脚本,将这些信息添加到我的mysql数据库中

    但是,当用户删除字符串时,我不知道如何知道删除了什么字符串,我的意思是,这个字符串的名称,我需要发送到我的php脚本,以便将其从数据库中删除

    看看这个版本的代码,没有ajax调用:


    谢谢你的帮助

    您需要将字符串看作一组元素:

     var li = $('<li/>');
     var strong = $('<strong/>', { text: '(' + val1 + '/100)' });
     var link = $('<a/>');
    
     link.click(function()
     {
         // Insert code here for the link click
     });
    
     li.append(strong).append(link);
    
     $('#langs').append(li)
    

    只需获取对元素的引用,然后附加click事件处理程序

    单击“删除”时,可以执行以下操作:

        val = $(this).parent().find('input').val();
    
    将从您添加的隐藏输入中获取值:


    面向对象的编程方法将有助于保持操作的组织性。基本上,您将每个给定语言的操作存储在对象中,在删除或添加该语言时修改该语言的操作

    这将在每次添加或删除语言时将“存储”对象打印到控制台,以便清楚地看到发生了什么

    这里是JS代码(你会注意到我几乎没有做任何更改):

    languageActions={}
    $(函数(){
    $(“#添加”)。单击(函数(){
    val=$('#add_lang').val();
    listitem_html=“
  • ”; listitem_html+=val; listitem_html+=''; listitem_html+=“” listitem_html+='
  • '; $('#langs').append(listitem_html); //现在将其添加到我们的对象中 languageActions[val]=“添加”; 日志(languageActions); }); $('.remove_lang').live('click',函数(e){ e、 预防默认值(); val=$(this.prev().val(); $(this.parent().remove(); //现在更改它在languageActions中的值 languageActions[val]=“删除”; 日志(languageActions); }); });

    我要指出的另一件事是,您并不真正需要这个隐藏的输入元素,因为您是通过AJAX而不是标准表单提交来完成的。相反,您可以只对HTML执行
  • SpanishRemove
  • ,然后单击.remove\u lang将执行
    $(this).prev().text()
    ,而不是
    $(this).prev().val()
    。没什么大不了的,但是你的HTML会更干净一些。

    我想这是一个简单的问题:

    $i = 1;
    
    while(xxx){
        //get the list with a different value for each element
        echo '<div id="add_' . $i . '>$whatever</div>';
        $i++;
    }
    
    $i=1;
    while(xxx){
    //为每个元素获取具有不同值的列表
    
    echo‘你好!我测试了你的解决方案,但是删除函数上的val变量是空的,知道吗?这是一个经过你修改的版本,它可能让你看到问题@DomingoSL-val变量不是空的。你试过我发布的小提琴吗?它对我非常有效。在我的小提琴中(最后一个带有你的mods的小提琴)是空的,有点奇怪。你指的是你在上面贴了几条评论的小提琴吗?jsfiddle.net/xw83U?因为那个版本根本没有我的修改。如果我不添加隐藏参数呢?我不想添加它。有没有其他方法来检索语言?这里有一个更详细的解释代码:从你的演示中,修改它您至少可以使用:
    val=$(this).parent('li').text().replace('Remove','').replace(/\(+(.*))+/g,”);
    从您创建的
  • 中获取文本,删除
    删除
    链接,然后使用正则表达式删除
    (blah)
    括号。这可能不是最好的,但会起作用:或者将语言包装起来,这样做,请参见-如果您只想使用语言,如果您也想使用级别,则需要更多的时间才能获得?完全没有问题-很高兴能提供帮助!
    languageActions = {}
    
    $(function () {
    
        $("#add").click(function() {
    
           val = $('#add_lang').val();
    
           listitem_html = '<li>';
           listitem_html += val;
           listitem_html += '<input type="hidden" name="languages[]" value="' + val + '" /> ';
           listitem_html += '<a href="#" class="remove_lang">Remove</a>'
           listitem_html += '</li>';
    
           $('#langs').append(listitem_html);
    
           //now add it to our object
           languageActions[val] = 'add';
    
           console.log(languageActions);
    
        });
    
        $('.remove_lang').live('click', function(e) {
    
           e.preventDefault();
           val = $(this).prev().val();
           $(this).parent().remove();
    
           //now change it's value in languageActions
           languageActions[val] = 'remove';
    
           console.log(languageActions);
    
        });
    
    
    });
    
    $i = 1;
    
    while(xxx){
        //get the list with a different value for each element
        echo '<div id="add_' . $i . '>$whatever</div>';
        $i++;
    }