【问题标题】:unable to generate dynamic listview through JQuery Mobile with JSON response?无法通过带有 JSON 响应的 JQuery Mobile 生成动态列表视图?
【发布时间】:2013-09-04 05:29:17
【问题描述】:

这是我的 Json 响应格式:-

{"Value":[{"ID":"1","productID":"10","subsID":"9","MinPrice":"500","MaxPrice":"50000","Subs":"xyz100"}]}

这是我的 .js 代码:-

function productURL(url) {
    alert(url);
    $.ajax({
        url: url,
        type : "GET",
        dataType : "json",
        contentType: "application/json",
        async : false,
        success : function(msg) {
            var respPrice = msg.Value;
            $.each(respPrice, function(index, value) {
                if(value.VarietyID == 0) {
                    alert('No product subs list found');
                } else {

                    subsId = value.subsID;
                    substance = value.subs;
                    minPrice = value.MinPrice;
                    maxPrice = value.MaxPrice;
                    respPrice += '<li class="ui-btn ui-btn-icon-right ui-li-has-arrow ui-li ui-last-child ui-btn-up-e">' + substance + minPrice + '-' + maxPrice + '</li>';
                    };

                    }           
                });
             $('#productList').append(respPrice).listview('refresh');

                },
            error : function(e) {
                console.log(e.message);
                alert('Error Occoured');
            }
        });
}

我需要做哪些修改才能正确生成列表视图?任何帮助将不胜感激。

【问题讨论】:

  • 放 var respPrice = ""; not var respPrice = msg.Value;。 'Alumimi' 在列表中的位置是什么?是列表中的第一个数据还是最后一个数据?
  • 它在响应中最后类似于 xyz100 和它的 Alumini1008,其余的是 minPrice 和 maxPrice。

标签: javascript android jquery json cordova


【解决方案1】:

你为什么不这样做??

$.each(respPrice.Value, function(index, value) {
      if(respPrice.VarietyID == 0) {
         alert('No product subs list found');
      } else {

       subsId = value.subsID;
       substance = value.Subs;
       minPrice = value.MinPrice;
       maxPrice = value.MaxPrice;       
       $respPrice = '<li class="ui-btn ui-btn-icon-right ui-li-has-arrow ui-li ui-last-child ui-btn-up-e">' + substance + minPrice + '-' + maxPrice + '</li>';

       // append here
       $('#productList').append($respPrice);
     }               
 });

 // and when all done, after $.each() refresh the listview
 $('#productList').listview('refresh');

这是一个小提琴:http://jsfiddle.net/REthD/19/

【讨论】:

  • 您已更改响应格式。我有不同的 json 响应格式。请查看我的问题顶部的格式,它在格式中包含“值:”。
  • 当我在 jsfiddle 中使用我的响应格式尝试您的解决方案时,它不起作用。任何其他方式来做到这一点..
  • 当我创建一个变量并将“值”存储在其中时,我最终得到了同样的混乱。
  • 你成功了...非常感谢...但是请您帮我解决 minPrice 和 maxPrice 在物质名称后出现一定间隔后出现的问题...
【解决方案2】:

改变

success : function(msg) {
            var respPrice = "";
            $.each(respPrice, function(index, value) {
                if(value.VarietyID == 0) {
                    alert('No product subs list found');
                } else {

                    subsId = value.subsID;
                    substance = value.subs;
                    minPrice = value.MinPrice;
                    maxPrice = value.MaxPrice;
                    respPrice += '<li class="ui-btn ui-btn-icon-right ui-li-has-arrow ui-li ui-last-child ui-btn-up-e">' + substance + minPrice + '-' + maxPrice + '</li>';
                    }

                    } 
 $('#productList').append(respPrice).listview('refresh');          
                });


                },
            error : function(e) {
                console.log(e.message);
                alert('Error Occoured');
            }
        });

【讨论】:

  • 感谢您的早期响应。我已经尝试过您的解决方案,但我在 logcat 中遇到错误,例如:- W/InputManagerService(73): Window already focus, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@461b4f18 并且应用程序没有'不给予任何回应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多