AJAX首次尝试json数据元素不变

时间:2013-06-29 14:23:52

标签: ajax custom-data-attribute

您好我的第一个AJAX JSON正在工作,它返回C5:3;在开发的那一刻并在div中显示它,img标签应该从off.png替换为on.png,但这不会发生。如果有人可以通过这方面的一些亮点,将不胜感激这是我的代码

          $("button.checkStatus").click(function(){
          //This Ajax checks the current on/off status of the passed X10 code
          $('img.checkStatus').each(function(i, obj) {
          $x10Device = $(this).data("x10");
          var postData = "url=http://local/tenHsServer/tenHsServer.aspx?t=ab&   
           f=DeviceStatus&d=" + $x10Device ;
           $.ajax({
                   type: "POST",
                   dataType: "json",
                   data: postData,
                   beforeSend: function(x) {
                   if(x && x.overrideMimeType) {
                   x.overrideMimeType("application/json;charset=UTF-8");
                   }
              },
            url: 'urlencodeJson.php',
            success: function(data) {
            // 'data' is a JSON object which we can access directly.
           // Evaluate the data.success member and do something appropriate...
          if (data.success == true){
              $('#section1').html(data.message);
              $("X10").data('src','lightbulbon.png');
          }
          else{
               $('#section2').html(data.message);
               $("X10").data('src','lightbulbon.png');
           }
           }
           }); 

HTML

 <img src="lightbulboff.png" class="checkStatus" data-x10="C5">
 <img src="lightbulboff.png" class="checkStatus" data-x10="C6">
 <img src="lightbulboff.png" class="checkStatus" data-x10="C7">
 <button class="checkStatus">Device Status Check</button>
 <div id="section1"></div>
 <div id="section2"></div>

这让我发疯!如果我能破解它,那么过去2天尝试过的每一种方式都会很棒,如果我能破解它的话!

非常感谢!!!

1 个答案:

答案 0 :(得分:1)

我认为你可以改变一些事情来使其有效,首先改变你的ajax请求中的成功部分:

 $("X10").data('src','lightbulbon.png');

这不会引导你到任何地方,因为你什么都不解决,把你当前的对象保存在变量中并更改它(或使用$(this)上下文,这是你当前的图像对象):

$(this).attr('src','lightbulbon.png');

另一个小问题是你如何设置呼叫,虽然这没有错,做:

    $x10Device = $(this).data("x10");


 var postData = "url=http://local/tenHsServer/tenHsServer.aspx?t=ab&   
       f=DeviceStatus&d=" + $x10Device ; 

可能有点多余,在设置发布请求时可能会导致容易出错,只需将其重写为数组:

data: {url : 'http://local/tenHsServer/tenHsServer.aspx?t=ab', 
                           f : 'DeviceStatus', 
                           d: $(this).data("x10") }

整个功能应该是:

     $("button.checkStatus").click(function(){
                  $('img.checkStatus').each(function(i, obj) {
var element = $(this);
                   $.ajax({
                       type: "POST",
                       url: 'urlencodeJson.php',
                       dataType: "json",
                       data: { url : 'http://local/tenHsServer/tenHsServer.aspx?t=ab', 
                               f : 'DeviceStatus', 
                               d: $(this).data("x10") },
                       beforeSend: function(x) {
                           if(x && x.overrideMimeType) {
                           x.overrideMimeType("application/json;charset=UTF-8");
                           },
                       success: function(data) {
                          if (data.success == true){
                              $('#section1').html(data.message);
                              element.attr('src','lightbulbon.png');
                          }
                          else{
                               $('#section2').html(data.message);
                               element.attr('src','lightbulbon.png');
                           }
                       }
                   }); 
                  });
            });