我有js页面,通过XMLHttpRequest发布数据,服务器端脚本检查此标头,如何发送此标头?
agent = WWW::Mechanize.new { |a|
a.user_agent_alias = 'Mac Safari'
a.log = Logger.new('./site.log')
}
agent.post('http://site.com/board.php',
{
'act' => '_get_page',
"gid" => 1,
'order' => 0,
'page' => 2
}
) do |page|
p page
end
Run Code Online (Sandbox Code Playgroud) 我想在ASP.NET中编写自己的AJAX,而不是使用ASP.NET ScriptManager等.
为什么?我喜欢手动做东西并且知道内部的东西是如何工作的,所以我只想自己做.
所以我的问题是,在我进行AJAX调用之后:
var ajaxCall = new XMLHttpRequest();
....
ajaxCall.send(null)
Run Code Online (Sandbox Code Playgroud)
我怎样才能在C#中添加Page_Load(或不),以便它监听它并返回一个String例如.
我正在编写一个相当大的基于JavaScript的应用程序,有时甚至会有八(8)个AJAX请求同时发生.这是IE6中的一个问题,因为它会杀死其余的请求,我知道,但是这个应用程序是针对现代浏览器的,因此,IE6不是问题.
但是,我有一种感觉(没有进行任何实际的分析),池化请求可以产生更好的性能.比如说,一次最多4个请求.
所以,我的问题是,集合AJAX请求是否有任何好处,或者与拥有一个接一个地处理它们的池相比,是否可以同时进行多个请求?
我意识到这可能取决于浏览器和Internet连接,但我不确定.
我在Chrome中遇到了AJAX问题,出现以下错误:
Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
function IO(filename) {
if (window.XMLHttpRequest) { // Mozilla, Safari,...
xmlhttp = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) { }
}
}
xmlhttp.open("GET", filename+"?random="+Math.floor(Math.random()*100000001), false);
xmlhttp.send();
if(xmlhttp.readyState==4)
return xmlhttp.responseXML;
}
Run Code Online (Sandbox Code Playgroud) 将产品升级到.NET 4.5后,我们在网站上遇到了一些奇怪的行为.我会尝试尽可能具体,但问题很模糊,所以请耐心等待.此外,对于这种情况,假设没有遵循最佳实践.
用户来到一个页面,该页面以异步方式向Web服务进行多次jquery ajax调用.由于此页面上的设计/编码较差,可能需要永久加载,但它确实提供了用户需要访问的子菜单.页面开始加载后,单击其中一个菜单选项转到另一个页面.到目前为止没什么特别的.
当我们在只安装了.NET 4.0的盒子上使用perfmon时,我们可以看到ASP.NET请求上下移动,正如您所期望的那样:

当我们将它安装在安装了.NET 4.5的盒子上时,我们得到:

执行上述工作流程后,请求挂断.没有排队; 他们只是坐在那里
经过进一步的研究,我们注意到两个不同页面之间的点击不仅仅是一个简单的href,而且实际上是在使用Response.Redirect(url);
此外,这仅在使用IE时发生.使用Firefox和Chrome时,这不是问题.
以下是我们迄今为止所尝试的内容:
同样根据要求,这里是HttpHandler代码:
public class KeepSessionAliveHttpHandler : IHttpHandler, IRequiresSessionState
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
if (context.Session.IsNewSession)
{
string redirectUrl = context.Request.Url.AbsoluteUri.Replace(context.Request.Url.AbsolutePath, VirtualPathUtility.ToAbsolute(Constant.Page_Logout));
context.Response.Clear();
context.Response.ContentType = "application/json; charset=utf-8";
context.Response.Flush();
context.Response.Write("{\"IsSessionAlive\": \"false\", \"RedirectUrl\": \"" + redirectUrl + "\"}");
}
else
{
context.Session["KeepSessionAlive"] = TimeZoneHelper.GetCurrentUtcDateTime();
context.Response.Clear();
context.Response.ContentType = "application/json; charset=utf-8";
context.Response.Flush(); …Run Code Online (Sandbox Code Playgroud) 我对IE11和ajax有一个奇怪的错误.对于我使用下面的代码提出的几乎所有请求,一切都很好,但是当我尝试与复制+粘贴方法一起使用时,它返回一个拒绝访问错误.总结一下
这是AJAX代码:
function ajaxRequest(requestName,responseFunction,parameters) {
var xmlhttp;
if (requestName.length==0) return;
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
if(xmlhttp.responseText == 'Error') alert('Error processing request. Please refresh the page and try again');
else if(xmlhttp.responseText != '') eval(responseFunction+"('"+xmlhttp.responseText+"')");
}
}
var now = new Date();
var url = "control/ajax.php?request="+requestName+"¶meters="+parameters+"×tamp"+now;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
Run Code Online (Sandbox Code Playgroud)
失败的一个例子,设置了以下变量:
requestName:"save_marksheet_mark"responseFunction:"update_save_marksheet_mark"参数:[60962,1284,5]
这段代码有问题吗?在特殊情况下,IE11是否会在此代码中引发错误?
javascript ajax internet-explorer xmlhttprequest internet-explorer-11
我正在使用jQuert .ajax函数来调用页面方法.该网站正在使用FormsAuthentication.因此,当身份验证票证到期时,对页面方法的调用显然会导致重定向到登录页面.
现在,编写System.Web.Handlers.ScriptModule的天才决定,如果出于某种原因对页面方法或Web服务方法进行REST样式调用,从JavaScript导致302重定向,他们只是简单地转向回应401未经授权.这导致浏览器弹出一个完全误导的登录UI,因为用户试图输入他们的用户名和密码,这意味着什么,因为使用了FormsAuthentication.最后,当用户单击"取消"时,401将进入错误处理程序.
那么,问题是,如何以任何方式禁用浏览器的登录UI提示?网上有些人建议在XHR请求中使用用户名和密码,但它似乎不起作用.
如果XMLHttpRequest对象支持W3C Progress Events,有没有办法在JavaScript中检查?我的意思是在这里,如果将onload,onprogress,onabort,onerror等属性设置为某些处理函数将具有那些称为那些事件的函数,如上所述.
附加(奖金)问题:有没有办法增加XMLHttpRequest(例如使用一些计时器)来支持这些事件?
阿里纳斯:我先在的XMLHttpRequest的上下文中找到关于W3C的进度事件在这里
我正在评估使用GWT-RPC和HTTP Call进行的调用之间是否存在性能差异.
我的appln服务作为Java servlet托管,我目前正在使用HTTPProxy连接从它们获取数据.我希望将它们转换为GWT-RPC调用,如果这会带来性能提升.
我想知道每个人的利弊...
还有关于衡量异步调用性能的工具的任何建议......
[ 关于可以与GWT一起使用的各种服务器通信策略的好文章.]
我有一个用Node.js编写的服务器,以及一个在浏览器中运行的Web客户端。客户端应从服务器上载一些文件并将其下载到服务器。服务器不是最初交付客户端的服务器,因此这里存在跨域情况。
服务器使用cors中间件来启用跨域请求。由于我还使用了许多自定义标头,因此将其与如下配置一起使用:
api.use(cors({
origin: '*',
allowedHeaders: [ 'content-type', 'authorization', 'x-metadata', 'x-to' ],
exposedHeaders: [ 'content-type', 'content-disposition', 'x-metadata' ]
}));
Run Code Online (Sandbox Code Playgroud)
相反,客户端使用axios,并且上传文件的代码如下所示:
await axios({
method: 'post',
url: 'https://localhost:3000/api/v1/add-file',
data: content,
headers: {
// ...
}
});
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都按预期工作,并且特别适用于CORS。
现在,我想跟踪上传的进度,因此,如其文档onUploadProgress所述axios,我将回调添加到了调用中:
await axios({
method: 'post',
url: 'https://localhost:3000/api/v1/add-file',
data: content,
headers: {
// ...
},
onUploadProgress (progressEvent) {
console.log({ progressEvent });
}
});
Run Code Online (Sandbox Code Playgroud)
如果我现在运行客户端,则上载仍然有效–但onUploadProgress永远不会调用回调。我已经了解到,并不是所有的浏览器都支持此功能(内部仅绑定到onprogress基础XmlHttpRequest对象的事件),但是最新的Chrome应该可以做到这一点(如果我尝试使用不涉及CORS的其他设置,则一切似乎都可以做到)工作)。因此,我认为这是一个CORS问题。
我读到,一旦您向onprogress事件添加侦听器,就会发送预检请求。这又意味着服务器必须接受OPTIONS请求。为此, …
xmlhttprequest ×10
ajax ×6
javascript ×5
asp.net ×2
jquery ×2
.net-4.5 ×1
asynchronous ×1
axios ×1
c# ×1
cors ×1
firefox ×1
gwt ×1
gwt-rpc ×1
iis ×1
mechanize ×1
networking ×1
node.js ×1
performance ×1
ruby ×1