javascript - GM跨域Ajax不工作

标签 javascript ajax cross-domain greasemonkey gm-xmlhttprequest

尝试使用greasemonkey脚本使用我们数据库中的数据预先填充客户网站上的表单,但我不知道如何绕过同源策略..

我正在使用 GM_xmlhttpRequest 甚至指定了 @grant GM_xmlhttpRequest 但没有运气..

这是我的脚本,我做错了什么?

// ==UserScript==
// @name        ORL Prepop Test
// @namespace   customertrackinc.com
// @description Prepopulate ORL Fields
// @include     https://www.openroadlending.com/Apply.aspx*
// @version     1
// @grant       GM_xmlhttpRequest
// ==/UserScript==

document.body.style.background = "white";
document.getElementById('ctl00_TopMenu_T872C6B14002_Menu1').innerHTML = "";
document.getElementById('Header').style.background = "#968888";
document.getElementById('Header').style.color = "black";
document.getElementById('Header').style.backgroundRepeat = "no-repeat";
document.getElementById('Header').style.backgroundPosition="bottom left"; 
document.getElementById('Header').style.border = "1px solid black";
document.getElementById('Header').style.padding = "1em";
document.getElementById('SuperLinks').innerHTML = "";
document.getElementById('SideBar').innerHTML = "";
document.getElementById('Logo').innerHTML = "";
document.getElementById('TagLine').innerHTML = "";
document.getElementById('LP_DIV_1368197056862').style.display = "none";
document.getElementById('Header').innerHTML =  '<div style="position:absolute; bottom:0; left:0; padding:.5em;">Script is working so far...</div>';


var boxes = document.getElementsByClassName('sfContentBlock'),
i = boxes.length;
while(i--) {
    boxes[i].style.display = "none;";
}

var all=document.getElementsByTagName("h1");
for (var i=0, max=all.length; i < max; i++) {
    all[i].style.display = "none";
}

var all=document.getElementsByTagName("h2");
for (var i=0, max=all.length; i < max; i++) {
    all[i].style.display = "none";
}

function addEventHandler(elem,eventType,handler) {
 if (elem.addEventListener)
     elem.addEventListener (eventType,handler,false);
 else if (elem.attachEvent)
     elem.attachEvent ('on'+eventType,handler); 
}

function startAjax(){
    var param1ct = document.getElementById('BodyContent_ctl00_ctl00_txtFirstName1').value;
    var param2ct = document.getElementById('BodyContent_ctl00_ctl00_txtLastName1').value;
    var param3ct = document.getElementById('BodyContent_ctl00_ctl00_txtStreetAddress1').value;
    var urlct = "URL INTENTIONALLY OMITTED/ajaxhandler.php?fname="+param1ct+"&lname="+param2ct+"&addr="+param3ct;
    GM_xmlhttpRequest({
        method: "GET",
        url: urlct,
        onload: function(response) {
            var statusct = xmlhttpp.responseXML.getElementsByTagName('status')[0].firstChild.nodeValue;
            var fnamect = xmlhttpp.responseXML.getElementsByTagName('fname')[0].firstChild.nodeValue;
            var addrct = xmlhttpp.responseXML.getElementsByTagName('addr')[0].firstChild.nodeValue;
            var lnamect = xmlhttpp.responseXML.getElementsByTagName('lname')[0].firstChild.nodeValue;
            var cityct = xmlhttpp.responseXML.getElementsByTagName('city')[0].firstChild.nodeValue;
            var statect = xmlhttpp.responseXML.getElementsByTagName('street')[0].firstChild.nodeValue;
            var zipct = xmlhttpp.responseXML.getElementsByTagName('zip')[0].firstChild.nodeValue;
            var emailct = xmlhttpp.responseXML.getElementsByTagName('email')[0].firstChild.nodeValue;

            document.getElementById("Header").innerHTML=statusct;
            if(status == "Bingo"){
                var confirmMsg = "*User Found*\n\nName: "+fnamect+" "+lnamect+"\nAddress: "+addrct+"\nCity: "+cityct+"\nState: "+statect+"\nZip: "+zipct+"\nEmail: "+emailct+"\n\nClick 'OK' To populate fields or click 'Cancel' if this is not the correct info.";
                var fillOrNot = confirm(confirmMsg);
                if(fillOrNot === true){                     
                    document.getElementById('BodyContent_ctl00_ctl00_txtFirstName1').value = fnamect;
                    document.getElementById('BodyContent_ctl00_ctl00_txtLastName1').value = lnamect;
                    document.getElementById('BodyContent_ctl00_ctl00_txtStreetAddress1').value = addrct;
                }else{
                    document.getElementById("Header").innerHTML="Aborted";
                }
            }
        }
    });
}

var first_name_field = document.getElementById('BodyContent_ctl00_ctl00_txtFirstName1');
addEventHandler(first_name_field,"keyup",startAjax);

最佳答案

您正在使用xmlhttpp,但它没有在任何地方定义。您需要解析响应。请参阅this answer .

关于javascript - GM跨域Ajax不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21790315/

相关文章:

asp.net - 从子页面刷新父页面

javascript - 从位置获取值

javascript - jsPlumb repaintEverything 不适用于除 Firefox 之外的所有浏览器

Javascript:如何最好地读取手持式条码扫描仪?

javascript - jquery 和 javascript 使用 ajax 的区别

javascript - 是什么阻止了 Ionic Security javascript SDK 被恶意行为者的网站加载?

javascript正则表达式验证函数

javascript - 如何使用 javascript xhr 下载大型视频文件(在 chrome 中)

javascript - Tomcat 5.5 的跨源资源共享

HTML5 track 元素没有 'crossorigin' 属性