以下代码不会根据频率进行更新; 一开始只是更新一次
new Ajax.PeriodicalUpdater('message_field', "http://localhost:8888/lsl_application/php/update_message_field.php?"+param, {
method: "GET",
frequency: 2,
decay: 1,
onSuccess: onSuccess_forPeriodic,
onFailure: function(xhrResponse){
alert("Failed to update!"+xhrResponse.statusText);
}
});
答案 0 :(得分:0)
您好,根据您的问题,我已按照以下示例进行了申请。看来您的Web服务/ API需要一些时间来处理您的请求。
请尝试按以下示例运行,您可能会对问题有答案。
我的客户代码Index.php,每秒请求一次。
public static void getadminName(){
String[] name= new String[20];
for (int count=0;count<name.length;count++){
name[count]= JOptionPane.showInputDialog(null,"Please enter
admin's name:");
String scount=Integer.toString(count);
name[count]= scount+1;
break;
}
}
服务器代码,time.php,Web服务/ API逻辑。
[HttpPost]
public async Task<IActionResult> Register([FromBody]UserModel model)
{
IdentityResult result;
if (!ModelState.IsValid) return BadRequest(ModelState);
var user = new ApplicationUser { UserName = model.UserName, Email = model.UserName };
result = await _userManager.CreateAsync(user, model.Password);
if (! result.Succeeded) return BadRequest(ModelState);
return Ok(new {userCreated=true, userName= model.UserName });
}
[HttpPost("login")]
public async Task<IActionResult> Login([FromBody]UserModel loginViewModel)
{
if (ModelState.IsValid)
{
var userFound = await _userManager.FindByNameAsync(loginViewModel.UserName);
if (userFound == null) return Unauthorized();
var userId = userFound?.Id;
// Claims, we endow this user
var claims = new[]
{
new Claim(Helpers.Constants.Strings.JwtClaimIdentifiers.Id, userId),
new Claim(Helpers.Constants.Strings.JwtClaimIdentifiers.Rol, Helpers.Constants.Strings.JwtClaims.ApiAccess),
new Claim("test2", "test2")
};
// Get options from app settings
var options = _configuration.GetSection(nameof(JwtIssuerOptions));
SymmetricSecurityKey _signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration["SecretKey"]));
// Configure JwtIssuerOptions
var token = new JwtSecurityToken
(
issuer: options[nameof(JwtIssuerOptions.Issuer)],
audience: options[nameof(JwtIssuerOptions.Audience)],
claims: claims,
expires: DateTime.UtcNow.AddMinutes(60), // token works 1 hour! (then invalidates)
notBefore: DateTime.UtcNow,
signingCredentials: new SigningCredentials(_signingKey, SecurityAlgorithms.HmacSha256)
);
return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) });
}
return BadRequest();
}
注意:请查看浏览器的网络。我的频率为1,而每5秒回答一次。
答案 1 :(得分:0)
根据文档http://api.prototypejs.org/ajax/Ajax/PeriodicalUpdater/,频率是代码在第一个请求结束到下一个请求开始之间等待的时间。
例如,您期望的是这个
function poll()
{
//function body
}
setInterval(poll,2000);
但这Ajax.PeriodicalUpdater
的作用是
function poll()
{
//function body
setTimeout(poll,2000);
}
poll();
等待直到第一个(上一个)请求完成的好处是,无论后端进程运行多快,UI都不会每2秒锤击一次后端代码。特别是如果后端进程需要2秒钟或更长时间来处理,它将导致请求堆积。
我还相信您可能使用不正确,因为Ajax.PeriodicalUpdater
只是Ajax.Updater
的包装器,它可以为您更新内容。由于看不到您的其余代码,我可能是错的。您提供的代码段应使用URL请求的响应来更新ID为message_field
的元素。在onSuccess事件之后的onComplete事件触发该内容更新。因此,如果URL响应没有像Jenish Zinzuvadiya的回答中那样变化,那么您会看到这种行为。
希望我能提供帮助。