2016-06-18 30 views
0

Ich habe ein Formular, das über AJAX in einer Fancybox geladen wird. Das Formular wird mit ajaxForm übergeben und die Daten werden in der Datenbank gespeichert. Das einzige Problem, das ich habe, ist, dass die "Erfolg" -Funktion von ajaxForm nicht aufgerufen wird.Warum wird die Erfolgsfunktion meines AjaxForm nicht aufgerufen?

Antwort von Anruf in der Registerkarte Netzwerk;

<script> 
$(document).ready(function() { 

// submit form 
$('#edit_letting_task').ajaxForm({ 
dataType: 'json', 
success: processJsonEditLettingTask 
}); 

function processJsonEditLettingTask(data) { 
    // 'data' is the json object returned from the server 
    alert(data.message); 
} 

}); 
</script> 

    { "message": "Test" } 

edit_letting_task.php Code (Roh-Code);

<?php 

require_once('../inc/app_top_cron.php'); 

?> 

<script> 
$(document).ready(function() { 

// submit form 
$('#edit_letting_task').ajaxForm({ 
dataType: 'json', 
success: processJsonEditLettingTask 
}); 

function processJsonEditLettingTask(data) { 
    // 'data' is the json object returned from the server 
    alert(data.message); 
} 

}); 
</script> 

    <?php 

// process form 

if (!empty($_POST)) { 

// define and escape each POST as a variable 

foreach ($_POST as $key => $value) { 

if (!empty($value)) { 

${$key} = mysqli_real_escape_string($con, PrepareInput($value)); 

} 
} 

// insert data into database 

$sql="UPDATE letting_task SET 
letting_task_status = '$letting_task_status', 
letting_task_notes = '$letting_task_notes' 
WHERE letting_task_id = '$letting_task_id' 
"; 

if (!mysqli_query($con, $sql)) { 
    die('Error Inserting Letting Task Data into Database: ' . mysqli_error($con)); 
} else { 
    echo '{ "message": "Test" }'; 
} 

} else { 

// define and escape each GET as a variable 

if (!empty($_GET)) { 

foreach ($_GET as $key => $value) { 

if (!empty($value)) { 

${$key} = mysqli_real_escape_string($con, PrepareInput($value)); 

} 
} 
} 

$letting_task_query = mysqli_query($con, "SELECT * FROM letting_task WHERE letting_task_id='" . $letting_task_id . "'") or die(mysql_error()); 
$letting_task_details = mysqli_fetch_array($letting_task_query); 

// display form 

echo '<form id="edit_letting_task" name="edit_letting_task" action="' . SITE_AJAX . 'edit_letting_task.php" method="post">'; 

echo '<input type="hidden" id="letting_task_id" name="letting_task_id" value="' . $letting_task_id . '">'; 

// letting task details 

echo '<fieldset> 
<legend>' . $letting_task_details['letting_task_name'] . '</legend> 

<table class="nobord">'; 

echo '<tr> 
    <td><label for="letting_task_status">Status:</label></td> 
    <td>'; 

echo '<select id="letting_task_status" name="letting_task_status" required>'; 

$letting_task_status_query = mysqli_query($con, "SELECT * FROM letting_task_status ORDER BY letting_task_status_id ASC"); 
while ($letting_task_status_row = mysqli_fetch_array($letting_task_status_query)) { 

if ($letting_task_status_row['letting_task_status_id'] == $letting_task_details['letting_task_status']) { $selected = ' selected'; } else { $selected = ''; } 

echo '<option value="' . $letting_task_status_row['letting_task_status_id'] . '"' . $selected . '>' . $letting_task_status_row['letting_task_status_name'] . '</option>'; 

} 

echo '</select>'; 
echo '</td></tr>'; 

echo '<tr> 
<td><label for="letting_task_notes">Notes:</label></td> 
<td><textarea id="letting_task_notes" name="letting_task_notes" rows="6" cols="40">' . $letting_task_details['letting_task_notes'] . '</textarea></td> 
</tr>'; 

echo '</table> 

</fieldset>'; 

// actions 

echo '<fieldset><legend>Actions</legend> 
<table class="nobord">'; 

echo '<tr><td><input type="submit" value="Save"></td></tr>'; 
echo '</table> 
    </fieldset>'; 

echo '</form>'; 

} 

mysqli_close($con); 

?> 

edit_letting_task.php Code (HTML-Ausgabe);

<script> 
$(document).ready(function() { 

// submit form 
$('#edit_letting_task').ajaxForm({ 
dataType: 'json', 
success: processJsonEditLettingTask 
}); 

function processJsonEditLettingTask(data) { 
    // 'data' is the json object returned from the server 
    alert(data.message); 
} 

}); 
</script> 

    <form id="edit_letting_task" name="edit_letting_task" action="https://www.property-system-uk.com/admin-area/ajax/edit_letting_task.php" method="post"><input type="hidden" id="letting_task_id" name="letting_task_id" value="1"><fieldset> 
<legend>Application to let received</legend> 

<table class="nobord"><tr> 
    <td><label for="letting_task_status">Status:</label></td> 
    <td><select id="letting_task_status" name="letting_task_status" required><option value="1">Pending</option><option value="2" selected>In Progress</option><option value="3">Completed</option></select></td></tr><tr> 
<td><label for="letting_task_notes">Notes:</label></td> 
<td><textarea id="letting_task_notes" name="letting_task_notes" rows="6" cols="40"></textarea></td> 
</tr></table> 

</fieldset><fieldset><legend>Actions</legend> 
<table class="nobord"><tr><td><input type="submit" value="Save"></td></tr></table> 
    </fieldset></form> 
+0

Wie wird die Antwort gesendet? Was siehst du auf der Registerkarte Netzwerk? Erhalten Sie eine 200 oder 500 Antwort? – Jacques

+0

@Jacques Die Netzwerk-Registerkarte sieht alles gut aus, 200 Antwort bekommen und Datenbank wird aktualisiert wie es sollte –

+0

Was ist in der Antwort für den Anruf in Ihrem Netzwerk Registerkarte? – Jacques

Antwort

1

Es wäre am besten für Sie einen separaten PHP-Endpunkt für Ihre Ajax-Anforderung zu erstellen, die die Formulardaten an der Datenbank und die Rückkehr der Antwort als JSON fügen hinzu (denn das ist, was Sie fordern).

Das Problem ist nicht in Ihrem JS pro sagen, so viel wie Ihre Implementierung von AJAX. Sie sollten die Antwort erhalten und dann die Domäne Ihrer Seite mit den Daten aktualisieren oder eine Erfolgsalarmmeldung usw. anzeigen, je nachdem, was Sie tun möchten.

Das einzige, worauf Ihr AJAX-Endpunkt antworten sollte, ist die JSON-Antwort, sonst nichts.

Weitere Informationen zur Antwort mit JSON finden Sie im Stack auf dieser Frage, da Sie es derzeit überhaupt nicht tun. Returning JSON from a PHP Script