在 MVC 项目中 Ajax 应该调用什么 URL?

What URL should Ajax call in an MVC project?

我是一个半新手,所以请多多包涵……注意,我现在既不知道 jQuery 也不知道 Json

在我的 MVC 项目中(我没有使用框架,但该项目将前端控制器与 MVC 结合在一起),我有:

1)一个控制器,它将一些参数发送到一个DAO。 DAO 运行 MySQL 查询并将一系列文章发送回控制器。

2)一个视图层,我希望用户能够单击一个按钮从一个文章移动到另一个文章。我建议这样做的方式是通过 javascript Ajax 调用来获取 Controller 中生成的数组中的下一篇文章。

我的问题是:Ajax 函数调用的 URL 应该是什么?显然它不能调用控制器(或者可以吗?)。我应该添加一类专用的 Ajax 内容容器,控制器将使用数组实例化吗?我很难看到视图如何找到正确的 URL...控制器是否应该将参数传递给视图并让它请求查询?


XHR(也称为 AJAX)调用在控制器级别没有什么不同,然后是经典的浏览器请求。不同之处仅在于您期望收到的响应。

这意味着,如果您已经完全实现了视图(不仅仅是愚蠢的模板),那么请求的类型应该只对视图很重要。您可以通过添加扩展名轻松区分它们:

  • http://foo.in/user/list - 简单请求
  • http://foo.in/user/list.json - XHR 请求

差异主要在路由机制上得到识别,它们在 Request 实例上设置了特定的细节。当控制器看到 Request 实例有一个 isXHR 标志时,它告诉视图:"用一些东西来响应这个,那不是完整的 HTML 页面"。

基本上,相同的控制器应该同时处理普通调用和 XHR 调用。其实你并不关心,它是什么类型的请求。仅需要在响应中生成 htmlxml 还是 json

P.S.: model layer should be completely unaffected by the type of requests.


从上面的帖子列表中,我假设您必须知道 Ajax 语法才能在编辑文章时调用方法。

具体做法如下:

1. 最初在你的控制器中定义一个动作来满足你的目的(可能是在这种情况下编辑你的文章。)

2.通过ajax方法指定Controller和你要调用的动作。 (

此时应该是 Articles -- Controller, EditArticle -- Action)。

控件自动导航到特定的操作方法。

问候

帕万.G


取决于您使用的框架。但一般来说:

您可以使用控制器发送一个"标志"(例如在一个 GET 变量中),它是一个 AJAX 查询,然后退出该函数,但是对于 AJAX 查询有不同的控制器被认为是一个更好的路线:) 无论如何,类似于此:

function page() {

 if($_GET["is_ajax"] =="1") {

   // return the AJAX query

   return;

 }

// go on with showing the page

}

希望这会有所帮助!


相关推荐

  • Spring部署设置openshift

    Springdeploymentsettingsopenshift我有一个问题让我抓狂了三天。我根据OpenShift帐户上的教程部署了spring-eap6-quickstart代码。我已配置调试选项,并且已将Eclipse工作区与OpehShift服务器同步-服务器上的一切工作正常,但在Eclipse中出现无法消除的错误。我有这个错误:cvc-complex-type.2.4.a:Invali…
    2025-04-161
  • 检查Java中正则表达式中模式的第n次出现

    CheckfornthoccurrenceofpatterninregularexpressioninJava本问题已经有最佳答案,请猛点这里访问。我想使用Java正则表达式检查输入字符串中特定模式的第n次出现。你能建议怎么做吗?这应该可以工作:MatchResultfindNthOccurance(intn,Patternp,CharSequencesrc){Matcherm=p.matcher…
    2025-04-161
  • 如何让 JTable 停留在已编辑的单元格上

    HowtohaveJTablestayingontheeditedcell如果有人编辑JTable的单元格内容并按Enter,则内容会被修改并且表格选择会移动到下一行。是否可以禁止JTable在单元格编辑后转到下一行?原因是我的程序使用ListSelectionListener在单元格选择上同步了其他一些小部件,并且我不想在编辑当前单元格后选择下一行。Enter的默认绑定是名为selectNext…
    2025-04-161
  • Weblogic 12c 部署

    Weblogic12cdeploy我正在尝试将我的应用程序从Tomcat迁移到Weblogic12.2.1.3.0。我能够毫无错误地部署应用程序,但我遇到了与持久性提供程序相关的运行时错误。这是堆栈跟踪:javax.validation.ValidationException:CalltoTraversableResolver.isReachable()threwanexceptionatorg.…
    2025-04-161
  • Resteasy Content-Type 默认值

    ResteasyContent-Typedefaults我正在使用Resteasy编写一个可以返回JSON和XML的应用程序,但可以选择默认为XML。这是我的方法:@GET@Path("/content")@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})publicStringcontentListRequestXm…
    2025-04-161
  • 代码不会停止运行,在 Java 中

    thecodedoesn'tstoprunning,inJava我正在用Java解决项目Euler中的问题10,即"Thesumoftheprimesbelow10is2+3+5+7=17.Findthesumofalltheprimesbelowtwomillion."我的代码是packageprojecteuler_1;importjava.math.BigInteger;importjava…
    2025-04-161
  • Out of memory java heap space

    Outofmemoryjavaheapspace我正在尝试将大量文件从服务器发送到多个客户端。当我尝试发送大小为700mb的文件时,它显示了"OutOfMemoryjavaheapspace"错误。我正在使用Netbeans7.1.2版本。我还在属性中尝试了VMoption。但仍然发生同样的错误。我认为阅读整个文件存在一些问题。下面的代码最多可用于300mb。请给我一些建议。提前致谢publicc…
    2025-04-161
  • Log4j 记录到共享日志文件

    Log4jLoggingtoaSharedLogFile有没有办法将log4j日志记录事件写入也被其他应用程序写入的日志文件。其他应用程序可以是非Java应用程序。有什么缺点?锁定问题?格式化?Log4j有一个SocketAppender,它将向服务发送事件,您可以自己实现或使用与Log4j捆绑的简单实现。它还支持syslogd和Windows事件日志,这对于尝试将日志输出与来自非Java应用程序…
    2025-04-161