【问题标题】:Changing from Prototype to jQuery从原型更改为 jQuery
【发布时间】:2009-11-05 20:47:00
【问题描述】:

我有以下要更改为 jQuery 的原型代码。

在我看来,除了 Ajax.Updater 之外的所有其他代码都可以在 jQuery 中使用。但我很可能错了。

function jsUpdateCart(){
  var parameter_string = '';
  allNodes = document.getElementsByClassName("process");
  for(i = 0; i < allNodes.length; i++) {
    var tempid = allNodes[i].id;
    var temp = new Array;
    temp = tempid.split("_");
    var real_id = temp[2];
    var real_value = allNodes[i].value;
    parameter_string += real_id +':'+real_value+',';
  }

  var params = 'ids='+parameter_string;
  var ajax = new Ajax.Updater(
    'ajax_msg','http://127.0.0.1/codeigniter_shopping/index.php/welcome/ajax_cart', {method:'post',parameters:params,onComplete:showMessage}
    );

}

function showMessage(req){
  $('ajax_msg').innerHTML = req.responseText;
  location.reload(true);
}


function jsRemoveProduct(id){
  var params = 'id='+id;
  var ajax = new Ajax.Updater(
    'ajax_msg','http://127.0.0.1/codeigniter_shopping/index.php/welcome/ajax_cart_remove', {method:'post',parameters:params,onComplete:showMessage}
    );

}

【问题讨论】:

    标签: jquery prototypejs


    【解决方案1】:

    快速浏览 ajax method 上的 jQuery 文档可以很容易地将您的 Ajax.Updater 调用转换为等效的 jQuery:

    $.ajax( {
      type: 'post',
      url: "<your_long_url>/ajax_cart",
      data: params,
      success: function( r ) {
        $('#ajax_msg').html( r );
        location.reload( true );
      }
    } );
    

    【讨论】:

    • 谢谢。它可以工作,除了它将加载索引页面而不是购物车页面的同一页面。您建议更改什么以重新加载同一页面?
    • 我不关注你的第二个问题。我刚刚移植了你的代码。为什么需要刷新任何页面?
    • 原始代码将我带到我所在的页面。但是您的代码将我带到索引页面。我认为这可能与您的代码有关。我必须看看我的 php。
    • 对不起。更新工作。我的问题是我将函数 jsRemoveProduct 更改为以下内容,它需要我进行索引。函数 jsRemoveProduct(id){ var params = 'id='+id; $.ajax({ type: "POST", url: "127.0.0.1/codeigniter_shopping/index.php/welcome/…", data: params, success: function( r ) { $('#ajax_msg').html( r ); location.reload( true ); } }); }
    • 我发现了问题。删除使用链接。 HTML 是这样的。 delete 并且更新使用INPUT。 如果我使用输入进行删除,它可以工作。但我想知道如何使用链接。
    【解决方案2】:

    我可能错了,但在我看来,除了 Ajax.Updater 和 $('ajax_msg') 之外,您的所有代码都是纯 JavaScript。 您必须使用 jquery 的 ajax,对于您的选择器,如果它是一个类,则只需使用 $('.ajax_msg'),如果是 id,则使用 $("#ajax_msg")。

    【讨论】:

      【解决方案3】:

      未经测试:

      function jsUpdateCart(){
          var parameter_string = '';
      
          $('.process').each(function(){
              var tempid = this.id, temp = tempid.split('_'), real_id = temp[2], real_value = this.value;
              parameter_string += real_id + ':'+real_value+',';
          });
      
          var params = 'ids='+parameter_string;
          $('#ajax_msg').load('http://127.0.0.1/codeigniter_shopping/index.php/welcome/ajax_cart',data,
              function(){location.reload(true);});
      }
      

      听起来您可以使用starter course on jQuery。如果它对您来说是新的,那么值得一读。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-09
        • 2014-02-06
        • 1970-01-01
        • 2012-03-05
        • 1970-01-01
        相关资源
        最近更新 更多