2012-02-03 181 views
2

我的JavaScript看起来像那样。Ajax成功功能问题

有一些问题,我想不通,我在那里做了错误

  • #status_message不显示生成的消息
  • $("#status").className = 'fail';不会覆盖当前类

enter image description here

var message=$("#status_message"), form=$("#bcscan"), ids=$('#itemids'),proctype, destination, counter=0, tenWordCounter = 0, autoPostInterval=null, errorcount=0, successcount=0; 

function ajaxPost() { 
    formData = form.serialize()+'&process=Scan';  
    formUrl = form.attr('action'); 
    formMethod = form.attr('method'); 

    $.ajax({ 
     url: formUrl, 
     type: formMethod, 
     dataType: "json", 
     data: formData, 
     success: function (data) { 
      var now = new Date(); 
      if(data.err_detected==="yes") 
      {  
       if(data.errors.indexOf(",") != -1) 
        errorcount=errorcount+data.errors.split(",").length; 
       else errorcount=errorcount+1;     
       $("#status").className = 'fail'; 
       message =errorcount+" errors found"; 
       $('#errors').prepend(data.errors).slideDown("slow");       
      } 
      $('#success').prepend(data.success).slideDown("slow"); 
      if(data.success.indexOf(",") != -1) 
       successcount=successcount+data.errors.split(",").length; 
      else successcount=successcount+1;    
      message +="Last submitted:"+now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds(); 
      $("#status_message").text(message); 
     } 
    }); 
} 

Here is page in action

如果你想测试,请选择一些选项从选择像从db,ebay.fr输出,然后按“扫描”。输入10位数字,用逗号分隔41,42(它们存在于数据库表格中)。在第10位后,它会通过ajax发布textarea。

+0

我在Firefox中使用了firebug,我认为你的ajaxPost()没有被调用过。 – 2012-02-03 08:59:01

+0

@SérgioMichelsajaxpost只会在10值+后出现,“” – 2012-02-03 09:04:56

+0

哦,我的错误:) – 2012-02-03 09:09:03

回答

4

对于该消息,你声明的元素指向一个jQuery对象:

var message = $('#status_message'), ... 

但此时你覆盖它的字符串:

message = errorcount + ' errors found'; 

你应该打电话:

message.text('some string...') 

要改变它的内容。

对于类的变化,正确的语法是:

$("#status").addClass('fail'); 
+0

addClass('fail');会覆盖当前班级? – 2012-02-03 09:02:27

+0

固定类问题,但仍不能解决消息问题。 – 2012-02-03 09:10:21

+0

好的,得到了​​这份工作。谢谢 – 2012-02-03 09:12:50

0

你试试这个? $("#status").addClass('fail');

+0

addClass('fail');会覆盖当前班级? – 2012-02-03 09:04:20

1

如何

$('#status').attr('class','fail'); 

这将覆盖当前类。

+0

thx非常。(F ***这个愚蠢的字符限制) – 2012-02-03 09:13:16