如何使用select的onchange事件执行XMLHttpRequest

时间:2016-12-02 16:11:13

标签: javascript html

我正在开发一个网页和这个网页我不能使用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

任何人都可以帮助我?

感谢您的理解。

1 个答案:

答案 0 :(得分:1)

  

不是有效的HTTP方法。

open第一个参数必须是HTTP方法,例如GETPUTPOST

您正在传递一个URL作为第一个参数。该网址应为第二个参数。