Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax没有';在函数内部调用时无法正常工作_Javascript_Ajax - Fatal编程技术网

Javascript ajax没有';在函数内部调用时无法正常工作

Javascript ajax没有';在函数内部调用时无法正常工作,javascript,ajax,Javascript,Ajax,我试图调用一个javascript函数,我有ajax请求,但它不起作用,因为没有任何responseText。但是,如果我把代码放在函数之外,它会像一个符咒一样工作。有人能解释一下它是怎么工作的吗 //在这里可以正常工作。 console.log(“addPostmanUser”); var data=JSON.stringify({ “电子邮件”:holahola@local.es", “密码”:“12345”, “用户名”:“holahola”, “姓名”:“holahola”, “姓氏”

我试图调用一个javascript函数,我有ajax请求,但它不起作用,因为没有任何responseText。但是,如果我把代码放在函数之外,它会像一个符咒一样工作。有人能解释一下它是怎么工作的吗

//在这里可以正常工作。
console.log(“addPostmanUser”);
var data=JSON.stringify({
“电子邮件”:holahola@local.es",
“密码”:“12345”,
“用户名”:“holahola”,
“姓名”:“holahola”,
“姓氏”:“托莱多”,
“出生日期”:68704560000,
“启用”:正确,
“当局”:[…],
“集团”:[],
“字符”:空,
“区域设置”:null,
“registrationToken”:空,
“facebookId”:空,
“pushToken”:空,
“termsDate”:空
});
var xhr=new XMLHttpRequest();
xhr.withCredentials=true;
xhr.addEventListener(“readystatechange”,函数(e){
if(xhr.readyState==4){
日志(“addPostmanUser响应:”);
console.log(xhr);
}
});
xhr.open(“POST”http://IP/user“,对);
setRequestHeader(“接受”、“应用程序/json”);
setRequestHeader(“内容类型”、“应用程序/json”);
setRequestHeader(“缓存控制”、“无缓存”);
发送(数据);
//这个不行
函数inSameFile(){
console.log(“addPostmanUser”);
var data=JSON.stringify({
“电子邮件”:holahola@local.es",
“密码”:“12345”,
“用户名”:“holahola”,
“姓名”:“holahola”,
“姓氏”:“托莱多”,
“出生日期”:68704560000,
“启用”:正确,
“当局”:[…],
“集团”:[],
“字符”:空,
“区域设置”:null,
“registrationToken”:空,
“facebookId”:空,
“pushToken”:空,
“termsDate”:空
});
var xhr=new XMLHttpRequest();
xhr.withCredentials=true;
xhr.addEventListener(“readystatechange”,函数(e){
if(xhr.readyState==4){
日志(“addPostmanUser响应:”);
console.log(xhr);
}
});
xhr.open(“POST”http://IP/user“,对);
setRequestHeader(“接受”、“应用程序/json”);
setRequestHeader(“内容类型”、“应用程序/json”);
setRequestHeader(“缓存控制”、“无缓存”);
发送(数据);
}




当你点击一个链接时会发生什么

  • 单击事件触发
  • JavaScript处理它上面的任何事件
  • 浏览器加载
    href
    中指定的页面(本例中为当前页面)
  • 所以这里会发生两件事中的一件:

    要么XHR请求发生得太慢,在这种情况下,它将在响应出现之前中止,因为承载它的页面将消失

    XHR对象将被记录到控制台,然后加载新页面。这将破坏XHR对象(因为它存在于一个被留下的页面上),并使其无法检查其内容(尽管在打开日志保存的情况下,控制台中仍会显示摘要)



    如果你想让人们点击某个东西来触发JavaScript,那么要么投入精力构建一个(如果JS成功,则使用服务器端回退和
    preventeddefault
    或者使用快捷且肮脏的选项,使用按钮而不是链接。

    “没有任何响应文本”-请更详细地描述您正在经历的行为。两个
    console.log
    语句是否有输出?两个请求中的开发者工具网络选项卡是否显示不同的数据?(例如,有一次流产)谢谢你的回复。问题是,您在第3点提到了,并且解释了关于XHR对象的内容,href正在加载同一个页面,它正在销毁请求。我还想到了不引人注目的JavaScript。在本例中,我有一个单独的javascript文件,其中包含所有函数和事件侦听器。(上面的例子只是为了解释我的问题)
     <a class="enter" href="" onClick="inSameFile();" id="btn_register"   >Registrarme</a><br>