如何在本地主机服务器上使用javascript ajax调用java类函数

如何在本地主机服务器上使用javascript ajax调用java类函数,javascript,java,ajax,function,server,Javascript,Java,Ajax,Function,Server,我得到了这样的东西: package beans; import javax.ejb.Stateless; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("cc") @Stateless public class CardBean impleme

我得到了这样的东西:

package beans;
import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("cc")
@Stateless
public class CardBean implements ICardRemote {

@Produces(MediaType.APPLICATION_JSON)
@Path("validate/{creditCard}")
@GET
@Override
public boolean Validate(@PathParam("creditCard")String creditCard){                 
    int sum = 0;                    
     boolean alternate = false;                 
     for (int i = creditCard.length() - 1; i >= 0; i--)                 
     {                         
        int n = Integer.parseInt(creditCard.substring(i, i + 1));                          
        if (alternate)                        
        {                                
             n *= 2;                                 
             if (n > 9)                              
            {                                
                n = (n % 10) + 1;                               
            }                         
         }                         
         sum += n;                        
        alternate = !alternate;                 
    }           
    return (sum % 10 == 0); //or true or false
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="code.jquery.com/jquery-3.1.1.min.js"; integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b‌​8=" crossorigin="anonymous">      </script>


</head>
<body>
<a
    href="http://localhost:8080/CreditCardWEB/rest/cc/validate/4111111111111111">Validan</a>
<br>
<a
    href="http://localhost:8080/CreditCardWEB/rest/cc/validate/4111111111111112">Nevalidan</a>
<br>

<br>
<input type="text" name="txtCC" value="4111111111111111" id="txtCC1">

<button name="btn" onclick="myFunction()">Click me!</button>
<br>
<br>
<p id="res">Result: </p>


<script>
function myFunction() {

    //    document.getElementById("res").innerHTML = "Result:" + txtCC1.value;
        var str = txtCC1.value;

         $.ajax({
            type: 'GET',
            url: './validate/'+str,                 
            success: function(data) {                               
                     document.getElementById("res").innerHTML = "Result:" + data;          
            },
            error: function(jqXHR, textStatus, errorThrown) {
                        //Do something on ERROR here                            
            }
        });                 
}
</script>

<br>

</body>
</html>
我得到了函数验证

现在我得到了一个HTML页面,看起来像这样:

package beans;
import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("cc")
@Stateless
public class CardBean implements ICardRemote {

@Produces(MediaType.APPLICATION_JSON)
@Path("validate/{creditCard}")
@GET
@Override
public boolean Validate(@PathParam("creditCard")String creditCard){                 
    int sum = 0;                    
     boolean alternate = false;                 
     for (int i = creditCard.length() - 1; i >= 0; i--)                 
     {                         
        int n = Integer.parseInt(creditCard.substring(i, i + 1));                          
        if (alternate)                        
        {                                
             n *= 2;                                 
             if (n > 9)                              
            {                                
                n = (n % 10) + 1;                               
            }                         
         }                         
         sum += n;                        
        alternate = !alternate;                 
    }           
    return (sum % 10 == 0); //or true or false
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="code.jquery.com/jquery-3.1.1.min.js"; integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b‌​8=" crossorigin="anonymous">      </script>


</head>
<body>
<a
    href="http://localhost:8080/CreditCardWEB/rest/cc/validate/4111111111111111">Validan</a>
<br>
<a
    href="http://localhost:8080/CreditCardWEB/rest/cc/validate/4111111111111112">Nevalidan</a>
<br>

<br>
<input type="text" name="txtCC" value="4111111111111111" id="txtCC1">

<button name="btn" onclick="myFunction()">Click me!</button>
<br>
<br>
<p id="res">Result: </p>


<script>
function myFunction() {

    //    document.getElementById("res").innerHTML = "Result:" + txtCC1.value;
        var str = txtCC1.value;

         $.ajax({
            type: 'GET',
            url: './validate/'+str,                 
            success: function(data) {                               
                     document.getElementById("res").innerHTML = "Result:" + data;          
            },
            error: function(jqXHR, textStatus, errorThrown) {
                        //Do something on ERROR here                            
            }
        });                 
}
</script>

<br>

</body>
</html>

在此处插入标题



点击我!

结果:

函数myFunction(){ //document.getElementById(“res”).innerHTML=“结果:”+txtCC1.value; var str=txtCC1.0; $.ajax({ 键入:“GET”, url:“./validate/”+str, 成功:函数(数据){ document.getElementById(“res”).innerHTML=“结果:”+数据; }, 错误:函数(jqXHR、textStatus、errorshown){ //在这里做一些错误的事情 } }); }
最后,我有一个文本字段,里面有一个硬编码的数字

单击按钮,我需要获取该号码并将其发送到我的验证功能中

一旦函数完成,我需要把结果写在按钮下面…这里

<p id="res">Result: </p>

结果:


所以它必须类似于Result:true或Result:false

您将在以下链接中找到问题的答案:


阅读有关使用javascript使用rest服务的更多信息(请确保包含jQuery库!):


这是正确的代码…thx到Mechkov

function myFunction() {
console.log($);
        var str = txtCC1.value;
         $.ajax({
            type: 'GET',
            url: 'http://localhost:8080/CreditCardWEB/rest/cc/validate/'  +str,                 
            success: function(data) {                               
                     document.getElementById("res").innerHTML = "Result: " + data;         
            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log(jqXHR +' : '+ textStatus +' : '+ errorThrown);             
            }
        });                 
}

你打算使用javascript吗?由于代码完全可以用js-alonejavascript-ajax-jquery来完成,所以我可以使用jquery,但是,有人告诉我根据您的代码使用AJAXas。在这个过程中似乎不需要它。但是如果你真的喜欢它,那就随它去吧。。似乎您要从另一页获得验证。你可以这样做。创建一个页面,然后使用jqueryajax/post/get创建一个请求。顺便说一句,jquery有一个内置的ajax函数。如果你想的话,你可以查看它的文档。我只是找不到解决我的具体问题的任何方法……但是没有http请求,有可能做到吗?这是不可能的,此方法只能由HTTP GET REQUESTMATE调用…但当我将其复制到代码中时…在这里键入在获得响应后执行操作…应该有一行document.getElementById(“res”).innerHTML=“Result:+data;做我希望做的,那就是键入结果:true…但它没有做任何事情--我不知道如何处理错误部分。。。?在同一行中,什么是数据?对,错?或411111…的字符串?错误部分是可选的。仅当您希望得到通知或对错误执行某些操作时。对于你的第一个问题,一旦你得到了数据(注意成功后你是如何得到函数(数据)),那么一旦你得到了“数据”,检查它是否是你需要设置为“真”的任何东西。你决定逻辑是什么,结果是真是假,基于你的控制器逻辑(它返回一个布尔值),我这样做。。。函数myFunction(){//document.getElementById(“res”).innerHTML=“结果:”+txtCC1.value;var str=txtCC1.value;$.ajax({type:'GET',url:'./Validate/'+str,success:function(data){document.getElementById(“res”).innerHTML=“结果:”+data;},error:function(jqXHR,textStatus,errorThrown){//Do-on-error-here}}};}