Javascript InvalidStateError,必须打开对象状态

Javascript InvalidStateError,必须打开对象状态,javascript,php,jquery,ajax,xml,Javascript,Php,Jquery,Ajax,Xml,此JavaScript代码应该读取xml文档并将其输出到表中。如果用户选择出价,则提示将要求输入新值,并且起始价格将立即更改。然而,我的代码并非如此。当我单击Bid按钮来更新值时,它会收到一个新的价格并将其附加到xml中。但是,页面上的起始价格不变。我发现这个错误发生在我提交第一个javascript函数中的按钮时。该错误是未捕获的InvalidStateError:未能对“XMLHttpRequest”执行“发送”:必须打开对象的状态。 有没有办法解决这个问题 这是JavaScript var

此JavaScript代码应该读取xml文档并将其输出到表中。如果用户选择出价,则提示将要求输入新值,并且起始价格将立即更改。然而,我的代码并非如此。当我单击Bid按钮来更新值时,它会收到一个新的价格并将其附加到xml中。但是,页面上的起始价格不变。我发现这个错误发生在我提交第一个javascript函数中的按钮时。该错误是未捕获的InvalidStateError:未能对“XMLHttpRequest”执行“发送”:必须打开对象的状态。 有没有办法解决这个问题

这是JavaScript

var xmlhttp;

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

function loadXMLDoc(url)
{
    var table
    var item
    var items
    var i;
    var sendoff;
    xmlhttp.onreadystatechange=function()
    {
        if ((xmlhttp.readyState == 4) &&(xmlhttp.status == 200))
        {
            table="<table>";
            var serverResponse = xmlhttp.responseXML;
            item=serverResponse.documentElement.getElementsByTagName("Product");

            for (i=0;i<item.length;i++)
            {
                table=table + "<tr>";
                items=item[i].getElementsByTagName("ItemName");
                {
                    table=table + "<td>Item Name : </td>"+"<td>" +   items[0].firstChild.nodeValue + "</td>";
                    iname =  items[0].firstChild.nodeValue;
                    //document.getElementById('test').innerHTML=sendoff;
                }
                table=table + "</tr>";
                table=table + "<tr>";

                items=item[i].getElementsByTagName("Category");
                {
                    table=table + "<td>Category : </td>"+"<td>" + items[0].firstChild.nodeValue + "</td>";
                }

                table=table + "</tr>";
                table=table + "<tr>";
                items=item[i].getElementsByTagName("Description");
                {
                    table=table + "<td>Description : </td>"+"<td>" +     items[0].firstChild.nodeValue + "</td>";
                }

                table=table + "</tr>";
                table=table + "<tr>";
                items=item[i].getElementsByTagName("StartPrice");
                {
                    table=table + "<td>Start Price : </td>"+"<td>" +     items[0].firstChild.nodeValue + "</td>";
                }

                table=table + "</tr>";
                table=table + "<tr>";
                items=item[i].getElementsByTagName("Owner");
                {
                    table=table + "<td>Owner  : </td>"+"<td>" + items[0].firstChild.nodeValue + "</td>";
                    iowner =  items[0].firstChild.nodeValue;
                    //document.getElementById('test').innerHTML="AA"+iowner;
                }

                table=table + "</tr>";
                table=table + "<tr>";
                table=table + "<td><input type=\"submit\" onclick=\"itembid('"+ iname + "','"+ iowner +"')\" value=\"Bid\"></td>";
                table=table + "<td><input type=\"submit\" onclick=\"\" value=\"Buy It Now\"></td>";
                table=table + "</tr>";
            }
            table=table + "</table>";
            document.getElementById('listinglist').innerHTML=table;
        }
    }
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
}

function itembid(iname,iowner)
{
    var newbid = prompt("Please enter your bidding price");
    var itemname = iname;
    var ownername = iowner;
    xmlhttp.open("GET", "readxml.php?newbid=" + encodeURIComponent(newbid) +  "&itemname=" + encodeURIComponent(itemname) + "&ownername=" +   encodeURIComponent(ownername) +"&date="+ Number(new Date), true);
    xmlhttp.send();
    xmlhttp.onreadystatechange = loadXMLDoc;
}
这是第二个函数调用的php页面

<?php
require_once("sessioncheck.php");
header('Content-Type: text/xml');
?>

<?php

$newbid = $_GET["newbid"];
$itemname = $_GET["itemname"];
$ownername = $_GET["ownername"];
if (!empty($_SESSION['fname']))
{
    toXml($newbid,$itemname,$ownername);
}

function toXml($newbid,$itemname,$ownername)
{
    //compare passed owner name to internal xml owner name
    //echo "BB".$newbid.$itemname.$ownername;

    $xml = simplexml_load_file("auction.xml");
    $sxe = new SimpleXMLElement($xml->asXML());
    foreach($sxe->children() as $items)
    {
        if($items->ItemName == $itemname)
        {
            //echo "Current Price".$items->StartPrice;
            $items->StartPrice = $newbid;
            //echo "New Price".$items->StartPrice;
        }
    }

    $sxe->asXML("auction.xml");
    return $sxe;
    //print_r($xml);
}
这是否可以链接到html文件主体中的onload函数


使用似乎未定义的变量url的多个请求。重复的onreadystatechange分配…很难计算出您试图在此处发出多少请求。我得到的印象是它是一个…但我看到3变量url是从html传递的auction.xml。我应该从第一个函数中删除onreadystatechange吗?我以前尝试过,但是它阻止了表的出现。我应该通过普通javascript读取xml文件,然后在第二个函数中只使用onreadystatechange吗?