Javascript:如何将值传递给函数参数?

时间:2015-10-24 10:34:32

标签: javascript

function retrieveHasilRawatJalan()

function retrieveHasilRawatJalan2(row, kd_klp) {

   var hasil_rawat_jalan2;

   var xhttp;
   if (window.XMLHttpRequest) {
     xhttp = new XMLHttpRequest();
   } else {
     // code for IE6, IE5
     xhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }

   xhttp = new XMLHttpRequest();
   xhttp.onreadystatechange = function() {
     if (xhttp.readyState == 4 && xhttp.status == 200) {
       hasil_rawat_jalan2 = JSON.parse(xhttp.responseText);
       document.getElementById("type").innerHTML = "type of : " + typeof hasil_rawat_jalan2;
       document.getElementById("value").innerHTML = "value of {'1' {'klp_id' : [" + hasil_rawat_jalan2[1]['klp_id'] + "]";
       document.getElementById("size").innerHTML = "object size :[" + parseInt(Object.size(hasil_rawat_jalan2)) + "]";
       document.getElementById("row_start").innerHTML = "start row : " + row;
       document.getElementById("demo").innerHTML = "content : " + hasil_rawat_jalan2;
     }
   }
   xhttp.open("POST", "../lab/get_row_content_from_lab_code/" + kd_klp + "", true);
   xhttp.send();

   //start from here the code is the same.
   var number_of_row = parseInt(Object.size(hasil_rawat_jalan2));

   addNewRow(number_of_row);

 }

variable hasil_rawat_jalan2包含JSON数据,此变量的类型为object,

我检查变量类型hasil_rawat_jalan2,并使用此代码调用其中一个数据

document.getElementById("type").innerHTML = "type of : " + typeof hasil_rawat_jalan2;
      document.getElementById("value").innerHTML = "value of {'1' {'klp_id' : [" + hasil_rawat_jalan2[1]['klp_id'] + "]";
      document.getElementById("size").innerHTML = "object size : [" + parseInt(Object.size(hasil_rawat_jalan2)) + "]";
      document.getElementById("row_start").innerHTML = "start row : " + row;
      document.getElementById("demo").innerHTML = "content : " + hasil_rawat_jalan2;

结果如下:

类型:对象

{'1'{'klp_id'的值:[HL-004]

对象大小:[8]

开始行:1

内容:[对象对象]

  

问题是当我将var number_of_row放入函数addNewRow()时   什么都不做。但如果我像这样直接输入数字,那就有用了   addNewRow(8)。如何检查错误?

1 个答案:

答案 0 :(得分:3)

该函数是异步的(实际上是XMLHttpRequest)。这意味着当您尝试使用它时尚未定义hasil_rawat_jalan2,因为AJAX请求不会暂停后续程序执行。您需要将addNewRow移至onreadystatechange回调,并在响应可用后调用它:

function retrieveHasilRawatJalan2(row, kd_klp) {

   var hasil_rawat_jalan2;

   var xhttp;
   if (window.XMLHttpRequest) {
     xhttp = new XMLHttpRequest();
   } else {
     // code for IE6, IE5
     xhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }

   xhttp = new XMLHttpRequest();
   xhttp.onreadystatechange = function() {
     if (xhttp.readyState == 4 && xhttp.status == 200) {
       hasil_rawat_jalan2 = JSON.parse(xhttp.responseText);
       document.getElementById("type").innerHTML = "type of : " + typeof hasil_rawat_jalan2;
       document.getElementById("value").innerHTML = "value of {'1' {'klp_id' : [" + hasil_rawat_jalan2[1]['klp_id'] + "]";
       document.getElementById("size").innerHTML = "object size :[" + parseInt(Object.size(hasil_rawat_jalan2)) + "]";
       document.getElementById("row_start").innerHTML = "start row : " + row;
       document.getElementById("demo").innerHTML = "content : " + hasil_rawat_jalan2;

       // Use hasil_rawat_jalan2
       var number_of_row = parseInt(Object.size(hasil_rawat_jalan2));
       addNewRow(number_of_row);
     }
   }
   xhttp.open("POST", "../lab/get_row_content_from_lab_code/" + kd_klp + "", true);
   xhttp.send();
 }
相关问题