Necesito abrir un modal usando el botón onclick, pero no tiene éxito. ¿Hay algún error en mi código?

Botón Añadir a la bolsa

<button class="btn btn-default" id="addtobag" onclick="addTobag();">Add to Bag</button><br>

Modal

<div class="modal fade" id="addtobagmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
        <div class="modal-content">
            <div class="modal-header">
                //mycode
            </div>
            <div class="modal-body">
                //mycode
            </div>
            <div class="modal-footer">
                //mycode
            </div>
        </div>
    </div>
</div>

Función

function addTobag() {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (request.readyState === 4 && request.status === 200) {
            if (request.responseText == "OK") {
                $('#addtobagmodal').modal('show');
            } else {
                alert('error');
            }
        }
    };
    request.open("GET", "myBag", true);
    request.send();
}
1
Poorna Senani Gamage 10 sep. 2018 a las 14:57

3 respuestas

La mejor respuesta

El problema es con "myBag" y su contenido.

Aquí están los detalles del modo:

Hay dos condiciones que está comprobando

Primero

if (request.readyState === 4 && request.status === 200)

Y segunda

if (request.responseText == "OK")

Significa que el modelo solo se mostrará cuando ambas condiciones sean correctas.

Cree un archivo de texto myBag.txt aplique OK (solo OK en ese archivo)

Ahora use el siguiente código:

function addTobag() {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (request.readyState === 4 && request.status === 200) {
            if (request.responseText == "OK") {
                $('#addtobagmodal').modal('show');
            } else {
                alert('error');
            }
        }
        else{
            alert('myBag file not found,  request.readyState = ' + request.readyState);
        }

    };
    request.open("GET", "myBag.txt", true);
    request.send();
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="modal fade" id="addtobagmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
        <div class="modal-content">
            <div class="modal-header">
                //mycode
            </div>
            <div class="modal-body">
                //mycode
            </div>
            <div class="modal-footer">
                //mycode
            </div>
        </div>
    </div>
</div>

<button class="btn btn-default" id="addtobag" onclick="addTobag();">Add to Bag</button><br>

Aquí asegúrese de que "myBag.txt" esté en la misma ruta en el archivo HTML.

El archivo de la nota será:

2
saAction 10 sep. 2018 a las 12:27

Puedes intentar escribir código de botón como

<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal" onclick="addTobag();>Add to Bag </button>

Y usando modal como

   <div class="modal fade" id="myModal" role="dialog">
                        <div class="modal-dialog">
<div class="modal-content">
            <div class="modal-header">
                //mycode
            </div>
            <div class="modal-body">
                //mycode
            </div>
            <div class="modal-footer">
                //mycode
            </div>
        </div>
    </div>
</div>
1
Avijit Barua 10 sep. 2018 a las 12:12

Intente debajo del código. Acabo de agregar bibliotecas js y css para probar. mira lo que te has perdido en tu código. para la prueba, haga clic en el botón prueba para abrir la misma ventana emergente.

  function addTobag() {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
      if (request.readyState === 4 && request.status === 200) {
        if (request.responseText = "OK") {
          $('#addtobagmodal').modal('show');
        } else {
          alert('error');
        }
      }
    };
    request.open("GET", "myBag", true);
    request.send();
  }

  function test() {
    $('#addtobagmodal').modal('show');
  }
<html>

  <head>
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.min.js"></script>
  </head>
  <body>
    <button class="btn btn-default" id="addtobag" onclick="addTobag();">Add to Bag</button><br>
    <button class="btn btn-default" id="addtobag" onclick="test();">Test modal only</button><br>

  <div class="modal fade" id="addtobagmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
      <div class="modal-content">
        <div class="modal-header">
          //mycode
        </div>
        <div class="modal-body">
          //mycode
        </div>
        <div class="modal-footer">
          //mycode
        </div>
      </div>
    </div>
  </div>

</body>
</html>
1
Shiv Kumar Baghel 10 sep. 2018 a las 12:14