¿Por qué no funciona? ... Script en el archivo principal.

$('#savedocx').submit(function(){
        $.ajax({
            type: "POST",
            url: "savedocx.php",
            data: {q:'1',b:'2'},
            success: function(){
                alert("YESdocs");
            }
        });
    });

Y el archivo php "savedocx.php":

    <?php 
if (isset($_POST['q'])){
    echo "Yep!";
}
else {
    echo "Error!";
}
?>

Siempre error = (en otros archivos usé ajax sin problema, pero aquí ...

Todos los scripts en el archivo php principal:

$(function(){
$('#registerform').submit(function(e){
        e.preventDefault();
        var m_method=$(this).attr('method');
        var m_action=$(this).attr('action');
        var m_data=$(this).serialize();
        $.ajax({
            type: m_method,
            url: m_action,
            data: m_data,
            success: function(result){
                $('#tablereport').html(result);
            }
        });
    });
$('#savexlsx').submit(function(e){
        e.preventDefault();
        var m_method=$(this).attr('method');
        var m_action=$(this).attr('action');
        var m_data=$(this).serialize();
        $.ajax({
            type: m_method,
            url: m_action,
            data: {q:'1',b:'2'},
            cache:false,
            success: function(){
                alert("YESxlsx");
            }
        });
    });
$('#savedocx').submit(function(){
        $.ajax({
            type: "POST",
            url: "savedocx.php",
            data: {q:'1',b:'2'},
            success: function(){
                alert("YESdocs");
            }
        });
    });
});
-1
OulinaArt 18 oct. 2017 a las 17:16

3 respuestas

La mejor respuesta

La respuesta encontrará! Cuando creo un elemento html en el segundo archivo php (complemento), debo crear un script ajax en ESTE archivo, no en main. Gracias a todos por ayuda.

0
OulinaArt 19 oct. 2017 a las 08:08

Supongo que savedocx.php no es un hermano de main.php

Cambio:

url: "savedocx.php",

Dentro:

url: "/absolute/path/to/savedocx.php",

Además, consulte https://stackoverflow.com/a/21617685/2191572 si desea depurar llamadas AJAX como un Pro.


Pruebe esto para disminuir el dolor de su AJAX

$.ajax({
    type: "POST",
    url: "savedocx.php",
    data: {q:'1',b:'2'},
    success: function( outputFromServer ){
        alert("Success: "+outputFromServer);
    },
    error: function( jqXHR, textStatus, errorThrown ){
        alert("Failed: "+jqXHR+" :: "+textStatus+" :: "+errorThrown);
    }
});

Los jQuery.ajax () los documentos están excelentemente escritos, así que no los ignore.

0
MonkeyZeus 18 oct. 2017 a las 15:32

Su llamada ajax funciona bien y también su forma. Si marca los encabezados en la pestaña de red, verá que al enviarlo envíe los datos q, b al archivo php. Debido al hecho de que después de enviar, recibe la alerta, y cuando hace clic en Aceptar, la respuesta de la red desaparece, no puede ver el mensaje "¡Sí!" pero intenté crear otro formulario que no se actualiza con un simple botón:

    <html>
<head>
    <title>Autocomplete</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet"/>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
</head>
<body>

<form id="savedocx">
    <input type="button" value="Refresh Page" >
</form>

</body>
</html>
<script>
    $('#savedocx').on('click',function(){
        $.ajax({
            type: "POST",
            url: "test2.php",

            data: {q:'1',b:'2'},
            success: function(){
                alert("YESdocs");
            }
        });
    });
</script>

Entonces, cuando hago clic en el botón, lo único que sucede es activar la llamada ajax que golpea el archivo php (que es el mismo que el tuyo).

Comprobando la respuesta de la pestaña de red obtengo la correcta:

http://prntscr.com/gyz017

0
pr1nc3 18 oct. 2017 a las 14:41