甚至不确定这是否是标题问题的正确方法.我知道我的AJAX调用都是错误的...这就是我现在正在做的事情(顺便说一句,我正在使用ASP.NET MVC后端):
我用来jQuery.ajax将一些数据发布到一个动作,这将加载我在响应中捕获的视图.它基本上为一个动作提供了一些数据,并取回了一些HTML.
假设我想创建一个经过验证的Ajax调用.如何在出错时收回验证消息?例如,Ajax登录表单.如果用户无法验证,我想告诉他们......而不是简单地无所事事.
抱歉天真的问题,我只是不知道如何在Google上找到解决方案.
先感谢您!
在我工作地点的ASP.net站点上,以下代码块负责处理文件下载(注意:此处未使用Response.TransmitFile,因为下载的内容是从zip文件流式传输的):
private void DownloadFile( Stream stream)
{
int bytesRead;
int chunkSize = 1048576; //1MB
byte[] readBuffer = new byte[chunkSize];
while ((bytesRead = stream.Read(readBuffer, 0, readBuffer.Length)) != 0)
{
if(!Response.IsClientConnected)
break;
byte[] chunk = new byte[bytesRead];
Array.Copy(readBuffer,0,chunk,0,bytesRead);
Response.BinaryWrite(chunk);
Response.Flush();
}
stream.Close();
}
Run Code Online (Sandbox Code Playgroud)
我们的用户经常下载数百MB的文件,这可以很快地咀嚼服务器内存.我的假设是这是由于响应缓冲.那有意义吗?
我刚刚读到了Response对象的'buffer'属性.如果我将其设置为false,是否会阻止Response.BinaryWrite()调用缓冲内存中的数据?一般来说,在这种情况下限制内存使用的好方法是什么?也许我应该从zip流式传输到临时文件,然后调用Response.TransmitFile()?
编辑:除了可能的解决方案,我对上面代码中存在的内存使用问题的解释非常感兴趣.为什么这会消耗远远超过1MB,即使在每次循环迭代时调用Response.Flush?它只是在每次循环迭代时发生的不必要的堆分配(并且不会立即得到GC),或者还有其他工作吗?
我的Javascript函数请求到aspx页面.İts代码:
var xhr = ("XMLHttpRequest" in window) ? new XMLHttpRequest() : new ActiveXObject("Msxml3.XMLHTTP");
xhr.open("GET", = 'http://www.example.net/abc.aspx', true);
xhr.send("");
Run Code Online (Sandbox Code Playgroud)
在此请求之后,我想从此页面发回响应并在客户端捕获它.我怎么做?
方法response.sendRedirect()在我的程序中不起作用.
代码通过并成功打印out.println("wrong user");,但重定向到谷歌分页不起作用.
String id="java";
try
{
query = "select Id from Users where Id= ?";
ps =Database.getConnection().prepareStatement(query);
ps.setString(1, id);
rs = ps.executeQuery();
if(rs.next())
{
out.println(rs.getString(1));
}
else
{
out.println("wrong user");
response.sendRedirect("www.google.com");
}
rs.close();
}
catch(Exception e)
{
//e.printStackTrace();
System.out.print(e);
}
Run Code Online (Sandbox Code Playgroud)
任何答案?
我正在做一个项目.昨天它运行得非常好,但是当我将系统操作系统从Windows 7 32位更新到Windows 8 64位并将服务器从32位更新到64位时,我的Php项目中的localhost响应速度非常慢(6 Senonds延迟每页)我也没有改变脚本中的任何内容.无法确定可能出现的问题.
问题是:当使用IHasResponseStatus和public ResponseStatus ResponseStatus { get; set; }属性时,如何使用一个命名空间进行响应,并删除前缀 d2p1 on ResponseStatus。
我http://schemas.tagway.com.ua/types为所有 Web 服务模型使用一个命名空间;除了节点 ResponseStatus 之外,响应看起来很棒,因为 ServiceStack: 它会自动xmlns:d2p1="http://schemas.servicestack.net/types"为 ResponseStatus添加自己的命名空间。
服务模式:
namespace NTPCore.ServiceModel.Operations.Balance
{
public class Balance
{
public Auth auth { get; set; }
}
public class BalanceResponse : IHasResponseStatus
{
public ResponseStatus ResponseStatus { get; set; }
public int balance { get; set; }
public int limit { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
NTPCore.ServiceModel 项目中的 AssemblyInfo.cs:
[assembly: ContractNamespace("http://schemas.tagway.com.ua/types", ClrNamespace = "NTPCore.ServiceModel.Operations.Balance")] …Run Code Online (Sandbox Code Playgroud) 我正在尝试做一些简单易行的事情:设置一个cookie!但浏览器(Chrome和Safari测试)只是忽略了它们.所以响应头看起来像:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:*
Connection:keep-alive
Content-Encoding:gzip
Content-Type:application/json; charset=utf-8
Date:Wed, 19 Jul 2017 04:51:51 GMT
Server:nginx
Set-Cookie:UserAuth=<some jwt>; Path=/; Domain=10.10.1.110; Expires=Wed, 19 Jul 2017 12:51:51 GMT; HttpOnly; Secure
Transfer-Encoding:chunked
Vary:Origin
Run Code Online (Sandbox Code Playgroud)
请求确实包括withCredentials=true.但Chrome中的Cookie部分是空的.我已经尝试完全删除域,删除路径,我能想到的每个配置,但浏览器只是不会播放球.
我错过了什么?
考虑一个简单的表单,它将电子邮件作为输入。如果身份验证失败,则“提交”按钮将调用引导模式。如果成功,它将重定向到下一个视图。
当出现引导模式时,浏览器会不断加载页面,等待响应。
我在服务器端使用此代码:
app.post('/', (req, res) => {
Users.findOne({
email: req.body.email
})
.then(user => {
if (user) {
obj = req.body.email
res.redirect('/survey')
}
})
})
Run Code Online (Sandbox Code Playgroud)
我试图添加一条else语句,以防找不到用户:
...
else {
console.log('User not found')
return
}
Run Code Online (Sandbox Code Playgroud)
我不想重定向到同一页面,因为模式无法正常工作。
是否有res实现此目的的方法?
我创建了一个齐发请求以接收HTTPS后端。
RequestQueue queue = Volley.newRequestQueue(uiCallback.getContext(),
new SSLVerification().getHurlStack(uiCallback.getContext()));
JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET,
requestUrl, null, new Response.Listener<JSONObject>() {
...
}
req.setRetryPolicy(new DefaultRetryPolicy(3_600_000, 0, 0));
queue.add(req);
Run Code Online (Sandbox Code Playgroud)
在清单中,我添加了Internet权限,如下所示:
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
只需很短时间的请求,一切都可以正常工作。
但是,如果在请求后3分钟内收到响应,则应用程序什么也不会收到。
在后端,我设置了一个断点。3分钟后,我让后端将响应发送给应用程序,但没有任何反应。没有成功,没有错误,仅此而已。
如果我发出不带的HTTP请求SSLVerification,那么6分钟后我也会收到响应。相反,HTTPS请求超过3分钟只是不想工作。
进行更改RetryPolicy以发出许多请求,这只是一种解决方法,不是一种选择。
我想在我的Asp.Net网站中压缩响应。我写了这段代码:
public static void CompressPage(HttpRequest Request, HttpResponse Response)
{
string acceptEncoding = Request.Headers["Accept-Encoding"];
Stream prevUncompressedStream = Response.Filter;
if (acceptEncoding.IsEmpty())
{
return;
}
acceptEncoding = acceptEncoding.ToLower();
if (acceptEncoding.Contains("gzip"))
{
Response.Filter = new GZipStream(prevUncompressedStream, CompressionMode.Compress);
Response.AppendHeader("Content-Encoding", "gzip");
}
else if (acceptEncoding.Contains("deflate"))
{
Response.Filter = new DeflateStream(prevUncompressedStream, CompressionMode.Compress);
Response.AppendHeader("Content-Encoding", "deflate");
}
}
Run Code Online (Sandbox Code Playgroud)
并称之为Page_Load事件:
protected void Page_Load(object sender, EventArgs e)
{
...
ZipHtmlPage.CompressPage(Request, Response);
}
Run Code Online (Sandbox Code Playgroud)
问题是当我运行有无上述代码的代码时Page_Load,响应的大小不会改变。
问题出在哪里?
谢谢
编辑1)
我认为这"Content-Encoding", "gzip"不会增加标题:
不知道为什么
编辑2)
当我HttpModule用于执行http压缩时: …
response ×10
asp.net ×2
javascript ×2
ajax ×1
android ×1
asp.net-mvc ×1
browser ×1
c# ×1
cookies ×1
express ×1
gzip ×1
https ×1
java ×1
jdbc ×1
jquery ×1
jsp ×1
localhost ×1
namespaces ×1
node.js ×1
php ×1
request ×1
servicestack ×1
validation ×1
windows ×1
windows-8 ×1