2016-06-18 132 views
0

我有一个窗体,正在加载通过AJAX内fancybox。表单使用ajaxForm提交,数据保存到数据库中。我唯一的问题是没有调用ajaxForm的'成功'功能。为什么我的ajaxForm的成功函数没有被调用?

网络选项卡中的呼叫响应;

<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代码(原始代码);

<?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代码(HTML输出);

<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

你如何发送回复?你在网络标签中看到什么?你是否得到200或500的回应? – Jacques

+0

@Jacques网络标签看起来不错,获得200响应,数据库更新,因为它应该 –

+0

在您的网络选项卡中该呼叫的响应是什么? – Jacques

回答

1

这将是最适合你的,增加了表单数据到数据库并返回响应为JSON(因为这是你问的)你的Ajax请求创建一个单独的PHP端点。

这个问题不在你的JS中说,就像你的AJAX实现一样。您应该获得响应,然后使用数据更新页面的dom或显示成功警报等,具体取决于您想要执行的操作。

您的AJAX端点应回应的唯一一件事是JSON响应,没有别的。

在堆栈上查看此问题以获取有关如何使用JSON响应的详细信息,因为您现在根本没有这样做。 Returning JSON from a PHP Script

相关问题