Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Javascript 如何正确组合这些AJAX和jQuery函数?_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 如何正确组合这些AJAX和jQuery函数?

Javascript 如何正确组合这些AJAX和jQuery函数?,javascript,jquery,ajax,Javascript,Jquery,Ajax,每当我单击此按钮时: <a onclick="AddToWishList(@item.id)" id="swapHeart" class="btn btn-default swap"> <span class="glyphicon glyphicon-heart-empty"></span> </a> 我希望无论何时调用AJAX函数,按钮都可以使用jQuery更改状态 AJAX: <script> functio

每当我单击此按钮时:

<a onclick="AddToWishList(@item.id)" id="swapHeart" class="btn btn-default swap">
     <span class="glyphicon glyphicon-heart-empty"></span>
</a>

我希望无论何时调用AJAX函数,按钮都可以使用jQuery更改状态

AJAX:

<script>
    function AddToWishList(item_id) {
        $.ajax({
            type: "POST",
            data: {
                itm_id: item_id
            },
            url: "/WishList/AddToWishList",
            success: function (e) {
                e.preventDefault();
            },
            error: function () {
                return "error";
            }
        });
    }
</script>
<script src="~/lib/jquery/dist/jquery.min.js">
</script>
<script>
    jQuery(function ($) {
        $('#swapHeart').on('click', function () {
            var $el = $(this),
                textNode = this.lastChild;
            $el.find('span').toggleClass('glyphicon-heart glyphicon-heart-empty');
            $el.toggleClass('swap');
        });
    });
</script>

函数AddToWishList(项目id){
$.ajax({
类型:“POST”,
数据:{
itm_id:项目_id
},
url:“/WishList/AddToWishList”,
成功:职能(e){
e、 预防默认值();
},
错误:函数(){
返回“错误”;
}
});
}
jQuery:

<script>
    function AddToWishList(item_id) {
        $.ajax({
            type: "POST",
            data: {
                itm_id: item_id
            },
            url: "/WishList/AddToWishList",
            success: function (e) {
                e.preventDefault();
            },
            error: function () {
                return "error";
            }
        });
    }
</script>
<script src="~/lib/jquery/dist/jquery.min.js">
</script>
<script>
    jQuery(function ($) {
        $('#swapHeart').on('click', function () {
            var $el = $(this),
                textNode = this.lastChild;
            $el.find('span').toggleClass('glyphicon-heart glyphicon-heart-empty');
            $el.toggleClass('swap');
        });
    });
</script>

jQuery(函数($){
$(“#swapHeart”)。在('单击',函数(){
var$el=$(此),
textNode=this.lastChild;
$el.find('span').toggleClass('glypicon-heart-glypicon-heart-empty');
$el.toggleClass(“交换”);
});
});
所以我的第一个想法是,我必须把这两个函数合并为一个函数。但是怎么做呢?因为按钮首先处理AJAX函数,然后处理jQuery


提前谢谢

去掉
onclick
并将项目id传递给数据属性

<a id="swapHeart" data-item_id="@item.id" .... </a> 

我不完全清楚你想要什么。如果希望在单击按钮时启动AJAX,请将其移动到下面的
函数(){…}
中。否则,如果希望在调用
AddToWishList
时更改状态,则将该代码移动到
AddToWishList
function.BTW,
e.preventDefault()应在
成功
之外。您可以将其添加为单击事件的第一行handler@Shyju每当
e.preventDefault()
开始时,ajax调用就无法工作。无论何时,
成功
,它都会工作。@TylerRoper我希望在调用AddToWishList时更改按钮的状态。这样控制台就不会记录ajax错误,但ajax和jquery函数现在对我来说都不是这样工作。。好的。我看到了你的照片,你不止一个。代替
id=“swapHeart”
swapHeart
设置为类,并将上述选择器更改为
$('.swapHeart')
。您是否也在使用ajax加载这些元素?如果是这样,请更改为
$(document)。在('click','.swapHeart',function(e){
上,这些元素没有使用ajax。更改您所说的所有内容都没有用。您是否可以在这个clcik hndler中而不是在ajax中记录一些内容,以查看事件是否工作?浏览器控制台中是否有错误?注意,我删除了
jQuery(function($){
为了简单起见,浏览器控制台中有一些错误,但我认为它们与此无关