2016-10-28 3 views
0

Wenn ich auf den Knopf klicke, um mein Formular unter Verwendung des Ajax-Codes unten zu senden, passiert nichts, keine der Warnungen wird ausgelöst, um mir zu sagen, wenn ein Fehler oder ein Erfolg und so ich Ich bin mir nicht sicher, wie ich wissen soll, was passiert. Egal, was ich versuche, ich kann die Alarme nicht auslösen.AJAX scheint nicht zu funktionieren

ich die direkte URL in die Form gestellt habe und das Ajax umgangen, und ich weiß, so dass die PHP-Seite korrekt funktioniert, es scheint nicht nur die Daten zu erhalten, wenn es über den AJAX-Code übergeben wird

Gibt es eine Möglichkeit zu sehen, welche Daten an die PHP-Seite übergeben werden?

$(document).ready(function() { 
    $('form.submit').submit(function() { 
    var name = $(this).find('.name').attr('value'); 
    var address = $(this).find('.address').attr('value'); 
    var number = $(this).find('.number').attr('value'); 
    var price = $(this).find('.price').attr('value'); 
    var deposit = $(this).find('.deposit').attr('value'); 
    var product = $(this).find('.product').attr('value'); 
    var payment_type = $(this).find('.payment_type').attr('value'); 
    var deal_date = $(this).find('.deal_date').attr('value'); 
    var install_date = $(this).find('.install_date').attr('value'); 
    var installed = $(this).find('.installed').attr('value'); 
    var notes = $(this).find('.notes').attr('value'); 
    var contract_received = $(this).find('.contract_received').attr('value'); 
    var id = $(this).find('.id').attr('value'); 

    // ... 

    $.ajax({ 
     type: "POST", 
     url: "http://www.thinkecosolutions.co.uk/test/services/update.php", 
     data: $('form.submit').serialize(), // or just: data: $(this).serialize(), 
     success: function() { 
     alert('success'); 
     }, 
     error: function() { 
     alert('failure'); 
     } 
    }); 
    return false; 
    }); 
}); 

OK so die Entwickler-Tools verwendet haben, hat sich gezeigt, dass der Code auf der PHP-Seite ist nicht immer und so muss es die Art und Weise sein, dass ich die js Seite haben gebaut und die Form der ist nicht zu sehen, Ajax Abschnitt vielleicht? Unten ist meine js Seite.

$('#detailsPage1').live('pageshow', function(event) { 
var id = getUrlVars()["id"]; 
$.getJSON(serviceURL + 'getemployee.php?id='+id, displayEmployee1); 
}); 

function displayEmployee1(data) { 
var employee = data.item; 
console.log(employee); 
$('#fullName').html('<form action="" id="submit" class="submit"><label>Name</label><br><input name="name" class="form-control" type="text" placeholder="Name" value="' + employee.name + '"/><br><label>Number</label><br><input name="number" class="form-control" type="text" placeholder="Number" value="' + employee.number + '"/><br><label>Address</label><br><input name="address" class="form-control" type="text" placeholder="Address" value="' + employee.address + '"/><br><label>Price</label><br><input name="price" class="form-control" type="text" placeholder="Price" value="' + employee.price + '"/><br><label>Deposit</label><br><input name="deposit" class="form-control" type="text" placeholder="Deposit" value="' + employee.deposit + '"/><br><label>Payment Type</label><br><input name="payment_type" class="form-control" type="text" placeholder="Payment type" value="' + employee.payment_type + '"/><br><label>Deal Date</label><br><input name="deal_date" class="form-control" type="text" placeholder="Deal Date" value="' + employee.deal_date + '"/><br><label>Install Date</label><br><input name="install_date" class="form-control" type="text" placeholder="Install Date" value="' + employee.install_date + '"/><br><label>Installed</label><br><input name="installed" class="form-control" type="text" placeholder="Installed" value="' + employee.installed + '"/><br><label>Notes</label><br><input name="notes" class="form-control" type="text" placeholder="Notes" value="' + employee.notes+ '"/><br><input name="id" id="id" type="hidden" value="' + employee.id + '" /><br><label>Contract Received</label><br><input name="contract_received" class="form-control" type="text" placeholder="Contract Received" value="' + employee.contract_recieved + '"/><br><br><input type="submit" name="button" id="button" value="Update" /></form>'); 

$(document).ready(function(){ 
$('form.submit').submit(function() { 
var name = $(this).find('.name').attr('value'); 
var address = $(this).find('.address').attr('value'); 
var number = $(this).find('.number').attr('value'); 
var price = $(this).find('.price').attr('value'); 
var deposit = $(this).find('.deposit').attr('value'); 
var product = $(this).find('.product').attr('value'); 
var payment_type = $(this).find('.payment_type').attr('value'); 
var deal_date = $(this).find('.deal_date').attr('value'); 
var install_date = $(this).find('.install_date').attr('value'); 
var installed = $(this).find('.installed').attr('value'); 
var notes = $(this).find('.notes').attr('value'); 
var contract_received = $(this).find('.contract_received').attr('value'); 
var id = $(this).find('.id').attr('value'); 
// ... 
    $.ajax({ 
type: "POST", 
url: "http://www.thinkecosolutions.co.uk/test/services/update.php", 
data: $('form.submit').serialize(), // or just: data: $(this).serialize(), 
success: function(){ 
alert('success'); 
}, 
error: function(){ 
alert('failure'); 
} 
}); 
return false; 
}); 
}); 

console.log(employee.telephone); 
if (employee.notes) {} 


    } 

function getUrlVars() { 
var vars = [], hash; 
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
for(var i = 0; i < hashes.length; i++) 
{ 
    hash = hashes[i].split('='); 
    vars.push(hash[0]); 
    vars[hash[0]] = hash[1]; 
} 
return vars; 
} 
+0

Haben Sie Ihren Browser-Inspektor versucht? Firefox und Chrome (ich bevorzuge Chrome) haben beide wirklich nette Webinspektoren. Sie haben beide einen Abschnitt namens "Netzwerk", der Ihnen anzeigt, was gesendet und empfangen wurde. Klicken Sie mit der rechten Maustaste auf einen Teil der Webseite und wählen Sie "inspizieren" (oder ähnlich), um den Inspektor aufzurufen. Dadurch sehen Sie auch die Konsole, auf der die Fehlermeldungen angezeigt werden. – LinuxDisciple

+0

Sie reichen wahrscheinlich das eigentliche Formular ein (das die Seite aktualisiert), bevor Ihr Ajax aufgerufen wird, versuchen Sie '$ ('form.submit'). Submit (function (e) {e.preventDefault();' – DelightedD0D

Antwort

0

Ich würde vorschlagen, Sie, dies zu tun (ich dies jedes Mal tun):

//This line prepares your form to be submited 
$('#YOUR_FORM_ID').on('submit', function (event) { 

    //Then you prevent your form to be submited by default 
    event.preventDefault(); 

    var form = $('#YOUR_FORM_ID').serialize(); 

    $.ajax({ 
     method: "POST", 
     url: "YOUR_URL", 
     data: form, 
     success: function(msg) { 
      //Any action after success 
     }, 
     error: function(){ 
      alert("Error") 
     } 
    }); 
}); 

Jeder Zweifel nur mir

In den Kommentaren wissen lassen, erklärte ich Schritt für Schritt, wie Sie überprüfen was zu einer bestimmten pHP-Datei wird

gesendet

enter image description here

+0

"Gibt es welche? Weise, um zu sehen, welche Daten an die PHP-Seite übergeben werden? ". Dies zeigt ihm keine Daten übergeben. Ich würde' console.log (msg) 'zu sehen, was gesendet wird. –

+0

Sicher, ich werde Schritt erklären Schritt für Schritt in Chrome: 1. Öffnen Sie die Entwicklertools 2. Wechseln Sie zu Netzwerk, und aktualisieren Sie die Seite für die Registerkarte Netzwerk, um Änderungen aufzuzeichnen 3. Senden Sie das Formular, und auf der Registerkarte Net sehen Sie die php-Seite 4. Klicken Sie auf diese PHP-Datei in der Registerkarte Net, gehen Sie zu Header 5. Am Ende der Kopfzeile sehen Sie die Daten an php gesendet –

Verwandte Themen