提问者:小点点

将多个id传递到一个ajax函数中


我想在multiples id上运行相同的js ajax函数,这样我就可以从我的数据库中返回特定的信息。 在这里它确实运行了“id=”test“,但是它将它们返回到所有的test中。我如何使它们返回到它自己的test中

“ID”

HTML

       <div>
           <p  class="postbutton" id="test_1" > </p> \\supposed to return 1, but it returns 3//
           <p  class="postbutton" id="test_2" > </p> \\supposed to return 2, but it returns 3//
           <p  class="postbutton" id="test_3" > </p> \\supposed to return 3, but it returns 3//
       </div>

我的脚本函数

$(".postbutton").each(function () {
                        x = $(this).prop('id').replace(/[^\d.]/g, '') // converting it to a set of ID to be passed to my controller

                            $.ajax({
                                /* the route pointing to the post function */
                                url: '/postajax',
                                type: 'POST',
                                /* send the csrf-token and the input to the controller, Laravel stuff */
                                data: {_token: CSRF_TOKEN, message: x},
                                dataType: 'JSON',
                                /* remind that 'data' is the response of the AjaxController */
                                success: function (data)
                                    {
                                        $(" p[id^='test']").html(data.msg);
                                    }
                                 });
                              });

共3个答案

匿名用户

使用$(this).html(),否则,对于每个ajax调用,将调用$(“p[id^='test']”)。html(data.msg),甚至是最后一个ajax调用。 所以最后一个呼叫有3作为应答。 因此它更新了两个第一个ajax调用。

$(".postbutton").each(function () {
                        x = $(this).prop('id').replace(/[^\d.]/g, '') // converting it to a set of ID to be passed to my controller

                            $.ajax({
                                /* the route pointing to the post function */
                                url: '/postajax',
                                type: 'POST',
                                /* send the csrf-token and the input to the controller, Laravel stuff */
                                data: {_token: CSRF_TOKEN, message: x},
                                dataType: 'JSON',
                                /* remind that 'data' is the response of the AjaxController */
                                success: function (data)
                                    {
                                        $(this).html(data.msg);
                                    }
                                 });
                              });

匿名用户

因为ID是属性,在您的情况下不会更改-尝试用.attr()替换.prop以获得ID的值。

此外,匹配您内部的成功函数将返回所有可能的匹配-在本例中为3

另外,如果您在成功函数中使用已经创建的ID来匹配元素(如

$(`#test_${x}`).html(data.msg);

匿名用户

首先将您的所有id存储在数组中。 在ajax函数中传递这个数组之后。 像这样:-

           var id_list=[];
            $(".postbutton").each(function () {
                        x = $(this).prop('id').replace(/[^\d.]/g, '') // converting it to a set of ID to be passed to my controller
                        id_list.push(x);
             });
            $.ajax({
                /* the route pointing to the post function */
                url: '/postajax',
                type: 'POST',
                /* send the csrf-token and the input to the controller, Laravel stuff */
                data: {_token: CSRF_TOKEN, message: id_list},
                dataType: 'JSON',
                /* remind that 'data' is the response of the AjaxController */
                success: function (data)
                    {
                        $(" p[id^='test']").html(data.msg);
                    }
                 });