我有一个简单的联系表格的网站.验证有点微小,因为它不会进入数据库; 只是一封电子邮件 表格如下:
有5个字段 - 其中4个是必需的.提交被禁用,直到4个字段有效,然后您可以提交.然后在服务器上再次验证所有内容,包括recaptcha(我的客户端未验证).整个过程使用ajax完成,并且有多个测试必须在服务器端传递或返回4**头,并调用失败回调处理程序.
一切都像桌面上的Chrome浏览器一样(我没有尝试过其他浏览器,但我无法想象他们为什么会有所不同),但是在iPhone上,即使我没有选中复选框,reCaptcha仍会验证考试.
换句话说:我仍然需要正确填写四个值才能提交,但如果我没有选中reCaptcha的方框,请求仍然会成功.
我可以发布一些代码,如果有人认为这将有所帮助,但似乎问题在于设备而不是代码.有没有人对此有任何见解?
注意:如果这有用,服务器端是PHP/Apache.
更新:2015年5月28日:
我还在调试这个,但似乎Mobile Safari忽略了我的iPhone上的响应标题.当我将响应输出到页面时,我在桌面上获得的(data,status,xhr)是:
data:我的回答在这一点上只是说错误或成功 - >error
status: error
xhr: {'error',400,'error'}
在移动野生动物园:
data: error
status: success
xhr: {'error',200,'success'}
所以 - 它似乎只是忽略了我的响应头.我试着明确设置{"headers":{"cache-control":"no-cache"}}但无济于事.
更新:2015年6月3日
每个请求,这是代码.这几乎可以肯定超过你的需要.由于我试图修复它所做的改变,它也变得更加迟钝.另请注意,虽然可能看起来存在尚未定义的变量,但它们(应该)已在其他文件中定义.
The client side
$('#submit').on('click', function(e) {
$(this).parents('form').find('input').each(function() {
$(this).trigger('blur');
})
var $btn = $(this);
$btn = $btn.button('loading');
var dfr = $.Deferred();
if ($(this).attr('disabled') || $(this).hasClass('disabled')) {
e.preventDefault();
e.stopImmediatePropagation();
dfr.reject();
return false;
} else { …Run Code Online (Sandbox Code Playgroud) 我试图通过UIWebView访问一个安全的网站.当我通过safari访问它时,我得到了一个身份验证挑战,但同样的情况并没有出现在应用程序的UIWebView中.我该如何让它出现?
任何指针,示例代码或链接都将非常有用.非常感谢.
知道为什么XMLHttpRequest使用正确的凭据在Pebble JS FrameworkAndroid上的基本身份验证失败但在iOS中有效吗?
完全相同的代码,类似于:
var req = new XMLHttpRequest();
req.open(method, url, true, user, pass);
req.send(data);
req.onreadystatechange = function() { ... }
Run Code Online (Sandbox Code Playgroud)
从Android Pebble应用程序返回401,但在iOS中正确验证.
ajax ×1
http ×1
iphone ×1
pebble-sdk ×1
pebble-watch ×1
php ×1
recaptcha ×1
uiwebview ×1
validation ×1