2012-02-15 97 views
2

我在这方面遇到了很多困难 - 我似乎在圈子里。
我想要做的是将数据从客户端上的JavaScript数据发送到Web服务。当我从XMLHttpRequest“Post”操作返回时,如何处理*响应*?

在下面的例子中,valFnamevalLnamevalPhone,并且valZip都有有效的字符串值:

function checkOffers(){ 
    // data collection from loaded form... 


     var postData = "'FirstName':'" + valFname ; 
     postData +="','LastName':'" + valLname ; 
     postData +="','PhoneNumber':'" + valPhone ; 
     postData += "','Zipcode':'" + valZip+"'"; 

     initialize(postData); 
} 



function initialize(postData) { 
    //var postMsg = createSoapHeader(msg); 
    var url = "https://server.company.com:9999/analytics/webservices/webservice.asmx/SamplePriorityOfferList"; 
    request.open("POST", url, false) 
    request.onreadystatechange = function(){ 
     if(this.readyState===4){ 
      //request is complete. handle it 
      processData; 
     } 
    }; 
    request.send(postData); 
} 

function processData(){ 
    response = request.responseXML.xml; 
    alert("Returned Data:" + response); 
} 

我打电话的checkOffers功能上PageLoad事件 - 我想要的web服务射击,而不必点击一个按钮,链接等。

我从我的请求中取回了空值,但应该获取数据。 任何意见,提示或建议,非常感谢。

+1

不可能说没有看到你的服务器端代码,但我推测你打算使用response.responseXML(没有.xml) – CBusBus 2012-02-15 00:11:48

+0

尝试'processData();'而不是'processData;'调用你的函数!)我们还需要知道你看到的是什么实际症状,以及你在调试Javascript时看到的是什么,至少是控制台输出。 – 2012-02-15 00:17:11

+0

你的脚本是否在'https://server.company.com:9999'服务的页面上运行? – pete 2012-02-15 00:17:14

回答

0

这条线:

 if(this.readyState===4){ 

应该是:

 if(this.readyState==4){ 

这至少应该让你看到警示。

+0

为什么'readyState'实际上不是一个数字? (我在问,我总是认为它是一个正常的数字,比如'4')。(另外问题是他们看到'null',而不是他们没有看到*任何东西*。) – 2012-02-15 00:13:14

+0

Err,it是。我正在让我的语言/运营商混淆。 :(这个答案显然是错的 – 2012-02-15 00:20:01

+0

LOL。谢谢你的回应,伙计们,我确实看到一个null,只是为了笑笑,我添加了一些JavaScript,在响应的开头和结尾寻找一个特定的字符串: var startTag =“”; var endTag =“”; var valueStart = 0; var valueEnd = 0; valueStart = xmlHttp.responseXML。 xml.indexOf(startTag,valueEnd)+ startTag。长度; valueEnd = xmlHttp.responseXML.xml.indexOf(endTag,valueEnd + 1); CLuelessonTuesdays 2012-02-15 01:15:52

相关问题