此JavaScript代码应该读取xml文档并将其输出到表中。如果用户选择出价,则提示将要求新值,并且将立即更改起始价格。但是,我的代码不是这种情况。当我点击Bid按钮更新值时,它会收到一个新价格并将其附加到xml。但是,页面上的起始价格不会改变。我发现当我在第一个javascript函数中提交按钮时会发生此错误。错误是Uncaught InvalidStateError:无法在'XMLHttpRequest'上执行'send':对象的状态必须是OPENED。 关于如何解决这个问题的任何想法?
这是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函数吗?
<body onload="loadXMLDoc('auction.xml')"