2个不同的ajax函数一个接一个地调用返回相同的值

时间:2015-08-12 12:09:57

标签: javascript jquery ajax

我有两种不同的ajax函数的奇怪行为。 它们中的每一个都获取不同的值并填充不同的文本框,但问题是它们返回第一个被调用函数的值。

这是代码:

            InputStream is  = connection.getInputStream();
            StringWriter sw = new StringWriter();
            IOUtils.copy(is, sw,"UTF-8");
            String s=sw.toString();
            JSONObject mainjobj= new JSONObject(s);

这里是if (id == "Other") { document.getElementById("Value").style.display = "block"; document.myForm.Price.value = ""; document.myForm.Code.value = ""; } else { document.getElementById("Value").style.display = "none"; document.myForm.TypeValue.value = id; getCOde(id); getPrice(id); } 函数:

getPrice

这是function getPrice(value) { if (window.XMLHttpRequest) { //safari, chrome, opera, ffox xmlhttp = new XMLHttpRequest(); } else { //IE ActiveXObject("Microft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.AddingForm.itemPrice.value = xmlhttp.responseText; } } xmlhttp.open("GET", "../scripts/getPrice.php?ID=" + value, true); xmlhttp.send(); } 功能

getCode

如果只调用其中一个函数,则两个函数都能正常工作。如果我交换它们的顺序,那么旁边的值就是第一个被称为函数的函数。

我想知道如何使一个函数等到另一个函数执行。因为我猜订单是问题

1 个答案:

答案 0 :(得分:1)

你应该在每个函数中声明xmlhttp,而不是将它作为全局变量。

function getPrice(value){
var xmlhttp;
if(window.XMLHttpRequest){//safari, chrome, opera, ffox
     xmlhttp=new XMLHttpRequest();
  }
  else{//IE
     xmlhttp = ActiveXObject("Microft.XMLHTTP");
  }

你要覆盖一个对象与另一个对象的引用,因此在两种情况下,标识符xmlhttp引用的事件处理程序中的对象是相同的