【获得所有的td标签】var tdobj = $(trobj).children("td"); 此时td标签共有4个——返回4个td对象
【定位第2个td标签】var status_obj = $(tdobj).eq(2); eq(2)代表选择第2个(从0开始)td标签——对应status标签,var status_str = status_obj.text(); 取出当前内容并通过console.log打印。【翻转操作,修改text】status_obj.text("off"); 使用text方法重新修改td标签的属性。
【发送PUT请求】 sendLedControl 请查看下节内容。
6.PUT更新 【设计思路】使用ajax发送一个PUT请求,更多信息请参考【 PHP再学习5——RESTFul框架 远程控制LED 】,PUT请求的格式如下:
PUT /api/leds/1
Host: localhost
Content-Length: 15
{"status":"on"}
【代码实现】 function sendLedControl( dev_id , cur_status ){ $.ajax({ url: '/api/leds/' + dev_id, // /api/leds/1 async: true, dataType: 'json', type: 'PUT', data: JSON.stringify({status:cur_status}), success: function(data , textStatus){ console.log("success"); }, error: function(jqXHR , textStatus , errorThrown){ console.log("error"); }, }); } 【执行结果】chrome浏览器 工具->开发者工具 选择Network Tag
图5 发送PUT请求
图6 查看status新状态
【若干说明】【url】 /api/leds/1(和【 PHP再学习5——RESTFul框架 远程控制LED 】略有差异),LED设备的"网址"。
【dataType】请求内容为JSON格式
【type】请求方法为PUT——更新某LED设备信息
【data】 请注意使用JSON.stringify方法 ,转换之后的格式为{"status":"on"},若没有stringify方法转换的结果为status:on,这并不符合PUT上传内容的规范。
【 success 和 error】正确处理和错误处理方法。
【遗留问题】虽然PUT请求和响应完全正确,但是Jquery总是调用error。网上查找了众多博客和帖子依然没有解决。再思考是不是PUT请求没有响应导致的,修改服务器侧代码问题,使得PUT响应中包含更新之后的LED状态问题,问题随之解决。
7.总结和 源码
因为对前端相关技术不熟悉,所以我以很认真的态度写完了这篇博文。如果您觉得内容中说的不清楚或者错误的地方请留言或者Email我。认真学完这篇博文,发现前端技术javascript,ajax和jquery没有想象的那么可怕甚至还挺好用的。这几天关注了espruino——使用javascript开发MCU的平台,总觉得工程师应该多学一些,见多识广才才行。
【 HTML代码 】