Невозможно вызвать WebMethod с помощью JavaScript (HTML)

CalculadoraWebService:

package in.gruporia.javawebservice;

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;

@WebService(serviceName = "CalculadoraWebService")
public class CalculadoraWebService {

//Retorna la SUMA de dos numeros enteros
@WebMethod(operationName = "AddIntegers")
public int add(@WebParam(name = "firstNum") int num1, @WebParam(name = "secondNum") int num2) {
    return num1 + num2;
}

//Retorna la RESTA de dos numeros enteros
@WebMethod(operationName = "SubIntegers")
public int sub(@WebParam(name = "firstNum") int num1, @WebParam(name = "secondNum") int num2) {
    return num1 - num2;
}

//Retorna el PRODUCTO de dos numeros enteros
@WebMethod(operationName = "MulIntegers")
public int mul(@WebParam(name = "firstNum") int num1, @WebParam(name = "secondNum") int num2) {
    return num1 * num2;
}

//Retorna la DIVISION de dos numeros enteros
@WebMethod(operationName = "DivideIntegers")
public int div(@WebParam(name = "firstNum") int num1, @WebParam(name = "secondNum") int num2) {
    return num1 / num2;
}

}


Index.html

<html>
  <head>
   <title>UseSwap</title>
    <script>
     var service;
     function InitializeService(){
      service.useService("http://localhost:8080/Calculadora/CalculadoraWebService?wsdl", "CalculadoraWebService");
     }
     var num1, num2, result;
     function Add(){
      num1 = document.DemoForm.Numero1.value;
      console.log(num1);
      num2 = document.DemoForm.Numero2.value;
      console.log(num2);
      result = service.CalculadoraWebService.callService("add", num1, num2);
      console.log(result);
      alert(event.result.value);
     }


     </script>
    </head>

    <body onload="InitializeService()" id="service" 
    style="behavior:url(webservice.htc)">

        <form name="DemoForm">
       Numero 1 : <input type="text" name="Numero1"/>

       Numero 2 : <input type="text" name="Numero2"/>
       <button onclick="Add()">Resultado</button>
      </form>
     </body>
 </html>

CalculadoraWebService работает отлично, я использовал его с Java в упражнении предварительного просмотра, вызывая все методы, но теперь я должен сделать это с помощью JavaScript. Значения num1 и num2 в порядке, но появляется ошибка

SCRIPT5007: невозможно получить свойство callService с неопределенной или нулевой ссылкой

1 ответ

Я полагаю, что у вас есть проблема с объемом service как переменная вне функции, которая ее инициализирует, вот фрагмент:

var service; //add this
function InitializeService(){
    service.useService("http://localhost:8080/Calculadora/CalculadoraWebService?wsdl", "GetSumService");
}

Если вы не объявите service вне функции InitializeService, Js объявит эту переменную внутри области действия этой функции, а затем, когда вы попытаетесь использовать ее в своей функции Add, область действия этой функции не увидит service вар.

Другие вопросы по тегам