Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
调用servlet时Ajax状态为0_Ajax_Servlets_Tomcat7 - Fatal编程技术网

调用servlet时Ajax状态为0

调用servlet时Ajax状态为0,ajax,servlets,tomcat7,Ajax,Servlets,Tomcat7,嗨,我正在尝试使用Ajax从servlet返回一个简单字符串,但是没有返回任何内容,因为readystate为4时状态始终为0 下面是.js代码 function validate(choice) { //var url = "http://localhost:8080/examples/validate.do?id=" + escape(choice); var url = "../../validate.do" if(wind

嗨,我正在尝试使用Ajax从servlet返回一个简单字符串,但是没有返回任何内容,因为readystate为4时状态始终为0

下面是.js代码

function validate(choice) {  
    //var url = "http://localhost:8080/examples/validate.do?id=" + escape(choice);                  
    var url = "../../validate.do" 
    if(window.XMLHttpRequest) {  
        req = new XMLHttpRequest();  
    }else if(window.ActiveXObject) { 
        req = new ActiveXObject("MSXML2.XMLHTTP.3.0"); 
    }  

    alert("IM IN VALIDATE() with " + choice); 
    req.open("GET", url, true);  
    req.onreadystatechange = callback;  
    req.send(null);   
    return false;

}  

function callback() { 
    if(req.readyState == 4 ) { 
        if(req.status == 200){ 
            var check = req.responseText;  
            alert(check);  
        }
        else
            alert(req.status);
    }  
}  
和Java代码

package model;  

import java.io.IOException;  
import java.io.PrintWriter;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;


public class DoAjaxServlet extends HttpServlet {  

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)  
    throws ServletException, IOException {  
        response.setContentType("text/html;charset=UTF-8"); 
         PrintWriter out = response.getWriter();  
        try {  

            response.setContentType("text/html"); 
            response.setHeader("Access-Control-Allow-Origin", "*"); 
            response.setHeader("Cache-Control", "no-store");  
            response.setHeader("Pragma", "no-cache");  
            response.setDateHeader("Expires", 0);
            String resultStr = "JUST RETURNING THIS STRING";
            out.write(resultStr);
        } finally {   
            out.close();  
        }  
    }   

    @Override  
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  
    throws ServletException, IOException {  
        processRequest(request, response);  
    }   

    @Override  
    protected void doPost(HttpServletRequest request, HttpServletResponse response)  
    throws ServletException, IOException {  
        processRequest(request, response);  
    }  

    @Override  
    public String getServletInfo() {  
        return "Short description";  
    }  

}  
我使用Chrome在Tomcat7上运行这个,并从localhost:8080访问html文件,而不是运行local,因此很多解决方案都无法运行

http://localhost:8080/examples/validate.do 
在Chrome中,它可以很好地打印字符串,所以我想我没有把url写错。js文件位于如下位置

http://localhost:8080/examples/jsp/HTE/my.js
我也试过使用“http://localhost:8080/examples/validate.do直接作为.js中的url,并将setHeader(“Access Control Allow Origin”(“*”)添加到Java文件中,但没有任何更改

在搜索了所有的帖子后,我对这一点有了很多想法。。。你能告诉我哪里会出问题吗