js/jquery的语法执行及js元素来源/过程跟踪及ajax不能跨域及浏览器的console调试:

ajax只能在当前页面不变的情况下请求后台,因此当然不能跨域。跨域的请求F12是没法跟踪跨域前的请求的,只能刷新跨域后跳到的页面跟踪

https://zhidao.baidu.com/question/528755051.html?qbl=relate_question_1&word=html%D2%B3%C3%E6%D6%D0%B5%C4%3Cscript%3E%B1%EA%C7%A9%CA%B2%C3%B4%CA%B1%BA%F2%BF%AA%CA%BC%D6%B4%D0%D0

浏览器自上而下解析html代码,从<!DOCTYPE html>到</html>,遇到js时浏览器会直接执行,(除了事件调用的脚本和声明函数的脚本)

 

xhr.done(function(data) {
    var filterBreakfaseList = {};
    var filterBedList = {};
    var breakfaseEnum = enumConfig.breakfastType();
    var bedEnum = enumConfig.bedType();
    $.each(data.data, function(hotelKey, hotel) {
        hotel.imageCount = hotel.images.length - 1;
        hotel.supplierRooms = hotel.supplierRooms != undefined ? hotel.supplierRooms : [];
        data.data[hotelKey]['roomCount'] = hotel.supplierRooms.length;
        $.each(hotel.supplierRooms, function(roomKey, room) {
            data.data[hotelKey]['supplierRooms'][roomKey]['breakfastShow'] = breakfaseEnum[room['breakfast']];
            filterBreakfaseList[room['breakfast']] = breakfaseEnum[room['breakfast']];
            var bedTypeShow = [];
            $.each(room.bedTypes, function(bedKey, bedType) {
                bedTypeShow.push(bedEnum[bedType]);
                filterBedList[bedType] = bedEnum[bedType];
            });
            data.data[hotelKey]['supplierRooms'][roomKey]['bedTypeShow'] = bedTypeShow.join(',');
            if(room['maxPersonNumOfBreakfast']){
                data.data[hotelKey]['supplierRooms'][roomKey]['breakfastShow'] += ' ' + room['maxPersonNumOfBreakfast'] + '人份';
            }
            roomDetailCache[room.supplierId + '_' + room.supplierRoomId] = data.data[hotelKey]['supplierRooms'][roomKey];
        });
    });

 

js语法

jquery语法:

jQuery.each() 函数用于遍历指定的对象和数组。

$(function () { 
var obj = {
"flammable": "inflammable",
"duh": "no duh"
};
$.each( obj, function( key, value ) {
alert( key + ": " + value );
});
})

key和value只是名字,可以随便定义。

define会先执行 是什么意思(同上图在一个页面中的代码)

 

https://www.cnblogs.com/cvst/articles/5817916.html

 

JQuery中$.ajax()方法参数详解

data为要发往服务器的数据,beforeSend为请求前对XMLhttpRequest对象的修改,

 

 

http://www.jb51.net/article/65215.htm

 

 

浏览器的console调试:

直接在console控制台输入js变量和表达式就可以进行调试。

浏览器打断点:

1.点选得到js对象的id或class,全局搜索js或class找到对应的js文件

2.在source里的js里直接点左边代码一下就设置上了:

3.一步步往下跳。

调试模式下的Initiator用于解释左侧对应请求是怎么发起的

 

 

设置表单属性并提交:

$('#bookingForm').attr('action', ret.url).submit();

jquery获取指定html元素的属性值或给该属性赋值

$(selector).attr(attribute)        $(selector).attr(attribute,value)
jquery获取指定html元素的数据或给其赋值(只是给元素赋值而已,不是展示什么新元素也不是给元素添加新属性)
$(selector).data(name)             $(selector).data(name,value)

 

 

AJAX发起的post请求,表单数据放在Request Payload中。

 

提交的是hotelData,到了后台怎么突然放进了ihOrderHotelVO??

 

 

将函数绑定到 submit 事件(可以绑定到任何事件,注意这种绑定形式)

语法

$(selector).submit(function)

 

jquery的removeClass()方法:

移除css样式

 

jquery的live()方法和bind()方法:

为某个元素添加某个事件(必须是事件比如click或submit等等,不是一个随便的函数名)处理器(事件处理器是事件和事件发生时运行函数(包括参数)的总和)

 

$(document).ready(function(){}):

当DOM(HTML)文档全部加载完成后开始执行的ready函数

 

$(function(){}) 是 $(document).ready(function(){}) 的简写

 

var hotCityId = [];
        $("[op=hotCity]:gt(0)", "#hotCityList").each(function (key, value) {
            hotCityId.push($(value).data('cityid'));

        });

使用的jQuery,获取id为hotCityList下,包含op属性并且值为hotCity([op=hotCity])的dom对象,并且从第二个(gt选择器)开始(:gt(0))进行遍历,获取对象中缓存的cityid这个数据压入hotCityId数组中

 

教训:

 

js元素来源追踪:

本页面上在代码里直接找不到(点选得到的直接id或class不在当前页面代码里)的任何元素若不是直接写在HTML中那一定是被js生成的或是使用某个模板的指令生成的(先找到模板页面继续用相同的办法在模板页面里追踪)。

一:从内向外依次点选确定目标元素的div的id或class(也可能不是div)并在当前页面代码中找(无则继续向外点选),有则找对应js代码(从当前页面的script标签和script标签引入的js文件中找,中文内容不一定能找到(例如asc码表示)可以用内容的id或class找。

 

js过程跟踪:

正向,逆向,中间向

 

远程js打断点在下面点大括号展开

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值