【发布时间】:2015-07-10 12:52:11
【问题描述】:
我目前正在将已构建的 Web 应用程序迁移到 MVC,并且我发现我太新手了,无法进行某些更改。有一些 ajax 调用让我感到害怕。我会尽量说清楚,但由于我缺乏经验,我不确定是否会顺便透露一些重要信息。
重点是在旧的应用程序中,事情是这样的:
在php代码中:
if ($action_user == 'show_alerts') {
$list = array();
$query = "SELECT alert_type FROM alert_contact WHERE NOT
deleted AND user_email=" . typeFormat($email);
$result = mysqli_query($db, $query) or die('Error in query "'.$query . '": ' . mysqli_error($db));
while ($db_field = mysqli_fetch_assoc($result)) {
$list[] = $db_field['alert_type'];
}
echo json_encode($list);
在jquery代码中:
$.ajax({
type: 'POST',
url: 'userpost.php',
data: $('#userForm').serialize(),
cache: false,
dataType: 'json'
我的问题来了,因为我不再有 userpost.php 文件,我必须将它发送到 index.php 并通过 get 请愿书调用我的用户组件,我不喜欢,但是我找不到另一种方法来做到这一点。而且,更糟糕的是,我根本不知道 ajax 是如何获得它需要的变量的。这一定是一个非常基本的错误,但我承认我目前的技能不太好。这就是我在我的版本中所做的:
在php代码中:
if ($action_user == 'show_alerts') {
$list = ModelUser::getAlertContact($act_email);
echo json_encode($list);//I predict that ajax don't reach this line, but not sure
}
在jquery代码中:
$.ajax({
type: 'POST',
url: 'index.php?option=users',
data: $('#userForm').serialize(),
cache: false,
dataType: 'json',
success: function(data) {
alert ('gotcha');
$.each(alertsarray, function(index, value) {
if ($.inArray(value, data) === -1) {
$("#sub" + value).prop("checked", false);
$('#alert' + value).removeClass("list_alert_sub");
}
else {
$("#sub" + value).prop("checked", true);
$('#alert' + value).addClass("list_alert_sub");
}
});
},
error: function(data) {
alert("¡Error (ajax)!");
}
});
任何帮助将不胜感激,如果我错过了更多信息,请告诉我。提前致谢。
更新:
我已经取得了一些进展,但似乎没有找到真正的解决方案。现在我知道 url 必须是控制器,所以我使用 'components/userpost/controller.php' 作为它,它到达 ajax 调用,导致出现成功警报。问题是 MVC 方式,因为我将 ajax 发送到控制器,但由于我没有在页面中重新加载,所以所有包含都失败了,所以它们显然没有被加载,我收到这样的错误:
PHP 警告:include(components/userpost/model.php): 未能打开 流:中没有这样的文件或目录 /var/www/html/viewer_mvc/components/userpost/controller.php 在第 3 行, 推荐人:http://localhost/viewer_mvc/index.php
真的希望你们能告诉我我在哪里失败,以及是否有一种特殊的方法可以在 MVC 中做这些事情。
【问题讨论】:
-
可能有助于提及您正在使用的框架并用它标记问题
-
我没有使用任何框架。我所拥有的只是一个带有函数 loader($component) 的文件,该函数将路由返回到我要加载的组件的控制器。我不知道什么是标签问题,你能告诉我它是做什么用的吗?也许是我在这里想念的?感谢您的回答。
标签: php jquery ajax model-view-controller