以下代码有效.但是,如果我注释掉该行Dim objRequest As MSXML2.XMLHTTP并取消注释该行,Dim objRequest As Object则会失败并显示错误消息:
参数不正确
为什么,以及我可以做些什么(如果有的话)?
Public Function GetSessionId(strApiId, strUserName, strPassword) As String
Dim strPostData As String
Dim objRequest As MSXML2.XMLHTTP
'Dim objRequest As Object '
strPostData = "api_id=" & strApiId & "&user=" & strUserName & "&password=" & strPassword
Set objRequest = New MSXML2.XMLHTTP
With objRequest
.Open "POST", "https://api.clickatell.com/http/auth", False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send strPostData
GetSessionId = .responseText
End With
End Function
Run Code Online (Sandbox Code Playgroud)
Corey,是的,我知道我必须这样做才能使我的代码在没有引用MSXML类型库的情况下工作.这不是问题所在.Dim objRequest As Object无论我是否使用,代码在使用时都会失败
Set objRequest = NEW MSXML2.XMLHTTP …
我有一个简单的问题:是否可以在XMLHTTPRequest中使用Digest-Authentication?
如果答案是否定的,那么技术原因是什么?或者如果有可能 - 我该怎么做?
非常感谢...到目前为止谷歌没有好的答案: - /
编辑:
谢谢你的回答.在收到nonce后,修改标头以匹配摘要认证方案似乎是一种解决方案.
但我真正想要的是我可以改变我当前的调用:xmlhttp.open("GET",url,false,用户名,密码); 某事 像那个xmlhttp.open("GET",url,false,用户名,密码,"DIGEST");
这也是我最初的问题的一部分:为什么open方法不提供做出摘要请求的选项?
也许有js-lib可以推荐让我这样做 - 正如你想象的那样我真的不想将一个简单的xmlhttp.open更改为多个请求并首先得到一个nonce.
我完全迷失了.我试图从使用vbscript的经典asp页面发布到远程服务器上的API.我的代码:
set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.open "POST", vURL, false
xmlhttp.setRequestHeader "Content-type","application/json"
xmlhttp.setRequestHeader "Accept","application/json"
xmlhttp.send "email=asdf@hotmail.com&firstname=joe&lastname=smith"
vAnswer = xmlhttp.responseText
Run Code Online (Sandbox Code Playgroud)
我收到的回复是请求不是预期的格式.技术支持告诉我,API期望在帖子正文中使用JSON.我可以从服务器端asp执行此操作吗?
据我所知使用ajax你可以发送数据到服务器,但我很困惑发送一个数组发布使用XMLHttpRequest不是任何库,如jQuery.我的问题是,是否有可能发送数组php使用XMLHttpRequest以及如何jQuery将数组发送到php,我的意思是jQuery做任何额外的工作来将数组发送到服务器(php $ _POST)?
我正在使用AJAX进行Struts动作,一切都很好,但是Firefox有问题,当我将URL中的参数作为请求参数传递时,如果该参数最后包含hash(#)符号,则firefox会删除所有内容在该符号之后,将该参数发送到没有它的操作.
例如,如果我在Firefox中传递test123#abcd,那么我在动作类中只得到test123而不是test123#abcd,这对我的要求是不可取的.对于IE它是完美的工作.我有什么方法可以提取完整参数,包括Firefox中的#符号.
如果我还需要发布java动作代码,请告诉我,谢谢.
JS片段
var valuePassword=test123#abcd;
var url = "/test/ChangePwdAjax.do?newPass="+valuePassword;
var xmlHTTP = getXMLHTTPRequest();
Run Code Online (Sandbox Code Playgroud) $_FILES当我通过Web Worker上传时,如何在PHP中检索?当我尝试使用时FormData,我收到以下错误:
错误:未定义FormData
这是我的代码:
function uploadFile(blobFile, fileName, filePart, totalChunks) {
//if I try to put this
//var formData = new FormData(); //it does not work
var xhr = new XMLHttpRequest();
xhr.open("POST", "upload.php"+"?"+"file="+fileName + filePart, true);
xhr.onload = function(e) {};
xhr.send(blobFile);
}
Run Code Online (Sandbox Code Playgroud)
所以在upload.php中,我应该如何获取tmp路径$_FILES?为了以防万一,我还将显示引用Web worker的页面:
<form id="fileuploader" enctype="multipart/form-data" method="post" action="upload.php">
<label for="fileToUpload">Select Files to Upload</label><br />
<input type="file" name="fileToUpload[]" multiple="" id="fileToUpload" onchange="fileList();"/><br />
<input type="button" onclick="sendRequest();" value="Upload" />
<!-- a place for File Listing -->
<div id="fileList"></div> …Run Code Online (Sandbox Code Playgroud) 尝试将JSON POST请求发送到HTTP API(PushBullet).但是在代码中面临错误.任何帮助赞赏.参考文件发送推送通知
Dim objXmlHttpMain , URL
strJSONToSend = {"type": "note", "title": "Alert", "body": "Lorem Ipsum Lorem Ipsum Lorem Ipsum."}
URL="https://api.pushbullet.com/v2/pushes"
Set objXmlHttpMain = CreateObject("Msxml2.ServerXMLHTTP")
on error resume next
objXmlHttpMain.open "POST",URL, False
objXmlHttpMain.setRequestHeader "Authorization", "Bearer <api secret id>"
objXmlHttpMain.setRequestHeader "Content-Type", "application/json"
objXmlHttpMain.send strJSONToSend
set objJSONDoc = nothing
set objResult = nothing
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用XMLHttpRequest对象连接到服务器以在不同时间发布数据.我创建一个对象并"连接"到服务器,如下所示:
var xhr = new XMLHttpRequest();
xhr.open("post", location, true);
xhr.send(); //Is this send call needed to open the connection?
Run Code Online (Sandbox Code Playgroud)
在稍后的时间点,我称之为:
xhr.send("Something to send");
Run Code Online (Sandbox Code Playgroud)
但是,查看开发人员控制台,似乎只有初始请求通过(并成功响应).第二个请求似乎没有发送.我试图缩小可能存在的问题,所以我想:一旦收到回复,就可以关闭连接; 为什么要保持开放?所以,我的问题是:XMLHttpRequest对象连接收到响应后是否关闭?如果是这样,模拟连续打开连接的最佳方法是什么(不断重新连接?)?
我XMLHttpRequest每秒都在服务器上,服务器将响应新消息.要调用XMLHttpRequest每一秒我使用a中的setInterval()函数SharedWorker.
但是,由于我每秒都在提出请求,我想知道是否setInterval()异步?
例如,如果一个XMLHttpRequest请求花了3秒钟来完成"由于延迟",我是否会同时setInterval()发出3个请求,或者等到第一个请求完成之后再等待1秒并发送另一个请求?
这是我的代码
function checkQueue(url)
{
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", reqListener);
xhr.open('GET', url, true);
xhr.send();
}
function reqListener ()
{
var queue = JSON.parse(this.responseText);
notifyAllPorts(queue);
console.log(this.responseText);
}
setInterval(
function() {
checkQueue('/add-ons/icws/push.php')
}
, 1000);
Run Code Online (Sandbox Code Playgroud) 我正在编写一个javascript应用程序,它发出远程服务器的HTTP请求.用户将输入主机名.
如果他们输入无法解析的DNS名称,我想提供诊断消息.这是当前的代码:
var req, t, url;
url = 'http://definitelydoesntexist0x314159.com';
req = new XMLHttpRequest();
req.open('GET', url, true);
req.onreadystatechange = function() {
if (req.readyState == 4) {
t = req.statusText;
}
};
req.send();
Run Code Online (Sandbox Code Playgroud)
在onreadystatechange函数中,req的状态为= 0,响应为"",因此没有太多迹象表明出现了什么问题.然而,控制台显示"无法加载资源:net :: ERR_NAME_NOT_RESOLVED",因此浏览器(Chrome)能够弄清楚发生了什么.
如何获得ERR_NAME_NOT_RESOLVED的指示?
更新:我回到这个问题,使用的策略是任何不是'超时'的响应意味着名称已解决,主机回答等.
我原来问题的答案似乎是:浏览器本身(在这种情况下是Chrome)检测到无法解析并在控制台中显示它,但XMLHttpRequest API不够丰富,无法指明原因.因此,可怜的Javascript程序员会将超时作为一种解决方法.
我还删除了CORS标题,因为正确指出的评论者之一没有价值.
xmlhttprequest ×10
javascript ×6
ajax ×3
http ×2
jquery ×2
json ×2
asp-classic ×1
asynchronous ×1
dns ×1
firefox ×1
html5 ×1
msxml ×1
php ×1
setinterval ×1
vba ×1
vbscript ×1
web ×1
web-worker ×1