getJSON 回调函数未在 js 文件中调用
在 portlet 中,我有一个 JSP 页面,我在其中声明了一个资源 URL 并将其映射到一个具有重写的serveResource 方法的 Java 类。
<portlet:resourceURL var="myURL" >
<portlet:param name="dataType" value="VOICE" />
</portlet:resourceURL>
我在 js 文件中有一个 javascript,它依次触发一个 ajax 调用,如下所示
$.getJSON(URL,{operator : 'XYZ'},function(b) {
//mycode
})
。此 js 被导入到 jsp 中。现在,当我单击链接时,它会触发 javascript,ajax 调用也会正常进行,并将请求传递给 java 类。但响应没有返回到回调函数。我怀疑的是,由于这是在一个单独的 js 文件中,因此响应将发送到 jsp 页面,而不是发送到 js 文件内的回调函数。如果我将其作为内联脚本放入 jsp 中,则此完全相同的代码可以工作。但是我需要将 javascript 代码放在单独的 js 文件中并使其工作。当我触发 getJSON 时,有没有办法传递一些上下文信息?...有没有办法完成这个?
In portlets, I have a JSP page where I have declared a resourceURL and mapped it to a Java class which has an overriden serveResource method.
<portlet:resourceURL var="myURL" >
<portlet:param name="dataType" value="VOICE" />
</portlet:resourceURL>
I have a javascript in a js file whicn in turn fires an ajax call like this
$.getJSON(URL,{operator : 'XYZ'},function(b) {
//mycode
})
This js is imported into the jsp . Now when I click on the link, it triggers the javascript, the ajax call also goes through fine and request is passed to the java class. But the response is not coming back to the callback function. What I suspect is since this is in a seperate js file, the response is going to the jsp page and not to the callback function inside the js file. This exact same code works if I put it as inline script in the jsp.But I need to place the javascript code in a seperate js file and make it work. Is there a way to pass some context information when I fire getJSON ?.. is there a way to accomplish this ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,检查 JavaScript 中的 URL,使其包含参数“jsoncallback=?”。
jQuery 将用 ID 替换 jsoncallback 参数之后的最后一个问号。
然后,该 ID 将在服务器端的 JSP 中使用,以创建一个响应,该响应将以根据 ID 值命名的函数开始。
简单的 JSP 示例:
这将导致一个看起来像这样的响应:
所以简而言之,如果您的 json 响应没有包含在此函数名称中,则回调函数将不会触发,而是会收到一个错误,您可以这么看:
希望这对
帕特里克有帮助
To begin with, check your URL in your javascript so it contains the parameter "jsoncallback=?".
jQuery will substitute the last questionmark, after the jsoncallback parameter, with an ID.
This ID will then be used on server side, in your JSP, to create a response that will start with a function named from the ID value.
Simple JSP example:
That would result in a response that would look something like this:
So in a short answer, if your json response is NOT wrapped in this function name the callback function will not fire, instead you will get an error which you could see this way:
Hope this helps
Patrik