jQuery ajax调用在Mac Safari和Chrome浏览器上返回空错误
我一直在寻找解决方案并尝试修复几天,但没有任何变化。
老板的人在Mac上我没有,所以我让他尝试重复修复并将输出转发给我。 到目前为止没有运气。
因此,当前的设置是,我有一个带有用户名和密码输入的表单,在经过validation后提交。 validation是一个ajax调用,它validation用户名和密码然后提交表单。
仅在Mac Chrome和Safari(webkit)上,我收到来自ajax调用的错误响应,该响应为空。
我已经剥离了执行validation的php函数,只需回显“hello”,这样我就知道它不是导致问题的php。
因此,一旦点击了目标元素,我就会获取用户名和密码值并发送ajax请求。 (这应该打我的PHP文件,只是回声你好)。 但是它返回并且没有消息而出错。 我的意思是xhr responseText和thrownError都只是空白/ null。
所以这里是代码:(HTML)
没什么特别的。 这是jquery篇:
$('#sign_in').click(function(){ var url = window.location.href; $('#error_msg').html(''); var username = $('input[name="user_name"]').val(); var password = $('input[name="user_pass"]').val(); var err = ''; $.ajax({ url: ajaxUrl+'validate_signin', type: 'GET', cache: false, data: { username: encodeURIComponent(username), password: encodeURIComponent(password)}, success: function(data, status, xhr){ if(data !== 'OK'){ err = data; $('#error_msg').html(err); return false; }else{ $('#signin_form').submit(); return false; } }, error: function(xhr, ajaxOptions, thrownError){ var tmp_err = ""; tmp_err = ":: "+xhr.responseText+" :: "+xhr.responseXML+" :: "; alert(tmp_err); alert(xhr.responseText); alert(thrownError); window.location.href = url; } }); return false; });
php文件只是:echo“hello”; 出口; 只是为了避免任何测试错误。
这里有一些东西,我添加了encodeURIComponent(),因为我确实看到一篇文章描述了特殊字符和空格的问题。(没有成功)成功:我包含了状态和xhr vars只是为了正常调试我只是有数据。
现在是错误的:这是每次都会出现的情况,但所有响应都是空白或未定义的。 我希望得到一些体面的错误,但我一无所获。 现在,这只是在最近升级到Mountian Lion的Mac上,而且仅在Webkit(Chrome / Safari)浏览器上。
我尝试在不使用jQuery的情况下只使用XMLHttpRequest,我得到同样的东西。
这适用于PC上的IE,Firefox,Chrome和Safari,它也适用于Mac上的FireFox。
最后这对他来说很有用,我相信在他升级之前。
任何帮助都会很棒。 我把我的头发拉出来,我在jQuery上比php更环保,所以希望你们中的一个可以帮助我。
这是一个配置问题。 如果在没有前导www的情况下输入域,则会出现问题。 在域名上。
添加标题(’Access-Control-Allow-Origin:*’); 到php文件解决了这个问题。 您可以指定允许或使用*的特定域。