我正在开发一个网页和这个网页我不能使用php或其他动态编程语言,在这个网页中我想从REST API获得响应的结果。我通过以下代码打开页面时管理:
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", "https://..../select", true); // false for synchronous request
xmlHttp.send();
xmlHttp.onreadystatechange = processInitialRequest;
function processInitialRequest(e) {
if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)){
var jsonObj = JSON.parse(xmlHttp.responseText);
var i = 0;
var select = document.getElementById("select_manufacturers");
var content = select.innerHTML;
for (i = 0; i< jsonObj.manufacturers.length; i++){
//var opt = document.createElement("option");
var arObj = jsonObj.manufacturers[i];
var enable = arObj['enabled'];
if(enable)
select.options[select.options.length] = new Option(arObj['manufacturer'],arObj['id']);
}
}
}
我的网页中有一些select
个组件:
<select id="select_manufacturers" onchange="processManufacturersChange()">
</select>
<select id="select_devicetypes">
</select>
当我更改select_manufacturers
我要加载select_devicetypes
但是当我这样做时:
function processManufacturersChange(){
var select = document.getElementById("select_manufacturers");
var valueManufacturer = select.options[select.selectedIndex].value;
var textManufacturer = select.options[select.selectedIndex].text;
xmlHttpDeviceTypes.open("https://...../select?manufacturerId=" + valueManufacturer,true);
//process stop here
xmlHttpDeviceTypes.send();
xmlHttpDeviceTypes.onreadystatechange = processDeviceTypesRequest;
}
该进程已在open
行停止。我已经在我的API上启用了CORS但它不起作用。
控制台说:
(index):149未捕获的DOMException:无法执行'open'on 'XMLHttpRequest的': 'https://.....amazonaws.com/v1/.../select?manufacturerId=10'不是 有效的HTTP方法。 at processManufacturersChange(http://localhost/jquery/jquery-ui-1.12.1/:149:21) 在HTMLSelectElement.onchange(http://localhost/jquery/jquery-ui-1.12.1/:58:75)
任何人都可以帮助我?
感谢您的理解。
答案 0 :(得分:1)
不是有效的HTTP方法。
open
的第一个参数必须是HTTP方法,例如GET
,PUT
或POST
。
您正在传递一个URL作为第一个参数。该网址应为第二个参数。