前端不显示下拉列表
来源:4-11 店铺类别区域信息的获取
姜岑
2020-01-15
老师你好 :
访问 : http://localhost:8080/O2O/shopadmin/shopoperation, 这个链接, 并没有显示下拉列表.
我测试了 ShopCategoryService 和 ShopCategoryDao 都没有问题.
然后直接访问 http://localhost:8080/O2O/shopadmin/getshopinitinfo 也可以得到数据. 这里说明路由路径设置也没有问题.
我在 js 的文件中设置了log 输出
console.log(2);
function getShopInitInfo() {
console.log(1);
$.getJSON(initUrl, function(data) {
console.log(data);
if (data.success) {
console.log(data);
访问 http://localhost:8080/O2O/shopadmin/getshopinitinfo 的时候, 控制台输出 2, 到那时并没有输出 1, 所以没有进入到这个函数.
贴出前面部分的代码, 希望老师能指导一下可能的问题, 确实找了很久了.
$(function(){
var initUrl = '/o2o/shopadmin/getshopinitinfo';
var registerShopUrl = '/o2o/shopadmin/registershop';
console.log(2);
function getShopInitInfo() {
console.log(1);
$.getJSON(initUrl, function(data) {
console.log(data);
if (data.success) {
console.log(data);
var tempHtml ='';
var tempAreaHtml = '';
data.shopCategoryList.map(function (item, index) {
tempHtml += '<option data-id="' + item.shopCategoryId +'">' + item.shopCategoryName + '</option>';
});
data.areaList.map(function (item, index) {
tempAreaHtml += '<option data-id="' + item.areaId +'">' + item.areaName +'</option>';
});
$('#shop-cateogry').html(tempHtml);
$('#area').html(tempAreaHtml);
}
});
谢谢老师 !
6回答
-
同学好,看代码像是同学光定义getShopInitInfo这个方法,但是并没有使用到它,可以参考我的源码
/** * */ $(function(){ var initUrl = '/o2o/shopadmin/getshopinitinfo'; var registerShopUrl = '/o2o/shopadmin/registershop'; getShopInitInfo(); function getShopInitInfo(){ $.getJSON(initUrl,function(data){ if(data.success){ var tempHtml = ''; var tempAreaHtml = ''; data.shopCategoryList.map(function(item,index){ tempHtml += '<option data-id="' + item.shopCategoryId + '">' + item.shopCategoryName+'</option>'; }); data.areaList.map(function(item,index){ tempAreaHtml += '<option data-id="' + item.areaId + '">' +item.areaName +'</option>'; }); $('#shop-category').html(tempHtml); $('#area').html(tempAreaHtml); } }); $('#submit').click(function(){ var shop = {}; shop.shopName = $('#shop-name').val(); shop.shopAddr = $('#shop-addr').val(); shop.phone = $('#shop-phone').val(); shop.shopDesc = $('#shop-desc').val(); shop.shopCategory = { shopCategoryId : $('#shop-category').find('option').not(function(){ return !this.selected; }).data('id') }; shop.area = { areaId : $('#area').find('option').not(function(){ return !this.selected; }).data('id') }; var shopImg = $('#shop-img')[0].files[0]; var formData = new FormData(); formData.append('shopImg',shopImg); formData.append('shopStr',JSON.stringify(shop)); var verifyCodeActual = $('#j_captcha').val(); if (!verifyCodeActual) { $.toast('请输入验证码!'); return; } formData.append('verifyCodeActual',verifyCodeActual); $.ajax({ url : registerShopUrl, type : 'POST', data : formData, contentType : false, processData : false, cache : false, success : function(data){ if(data.success){ $.toast('提交成功!'); }else{ $.toast('提交失败!' + data.errMsg); } $('#captcha_img').click(); } }); }); } })
012020-01-16 -
姜岑
提问者
2020-01-16
在 chrome 中进行调试, 进入到 $.ajax 函数, 然后就进入到 zepto.min.js, 从这个 zepto.min.js 里面出来之后就直接跳到 $('submit').click(function() 函数了, 所以这里定位到问题肯定是 $.ajax 函数的.
使用 $.getJSON 也是同样的情况.
0102020-01-16 -
姜岑
提问者
2020-01-16
看了老师给其他同学的回答: 将$.getJSON替换成$.ajax试试,然后打印error里的参数, 得到的
XMLHttpRequest : 404
textStatus : 4
errorThrown : error.
所以这里换成 $.ajax 函数就运行了, 但是 $.getJSON 函数就没有运行. 再看看其他同学的提问, 查查资料.00 -
姜岑
提问者
2020-01-16
这是 chrome 控制台的信息, 老师看一下方向, 我查了一下 getJSON 不执行可能是数据的 JSON 格式错误, 但是这里使用了 @ResponseBody 的话, 应该 JSON 格式不会出错, 奇怪的是, 我在 http://localhost:8080/O2O/shopadmin/shopoperation 这个页面, 将地址后面的 shopoperation 改为 getshopinitinfo 是可以看到 JSON 数据的, 但是如果复制控制台报 404 的这个页面 http://localhost:8080/o2o/shopadmin/getshopinitinfo , 新建一个窗口访问的话, 是会报 404的. controller 里面的路径都是按照视频来的, 这里可能的错误麻烦老师看看, 辛苦了.
00 -
姜岑
提问者
2020-01-15
完整的 shopoperation.js 的代码 :
00 -
姜岑
提问者
2020-01-15
这里好像是内部函数定义了需要调用, 但是视频里老师好像也没有调用, 有些困惑, 希望老师解答. 卡了很久.
032020-05-04
相似问题
回答 3
回答 2
回答 5
回答 2
回答 4