设置:
我有一个html" target="_blank">数据表,其每一行都是可点击的。单击行时,将进行 ajax 调用以返回一些数据。有时 ajax 调用需要一点时间,具体取决于返回的数据量。一切正常。
问题:
当快速单击行时,一个接一个地单击行时,会出现此问题。简而言之,在上一个 ajax 调用返回之前,如果单击该行(即进行新的 ajax 调用),我会得到一个错误。
Uncaught TypeError: Property 'callback' of object [object Window] is not a function
(ajax调用返回一个JSONP数据)
看起来好像ajax调用混杂在一起了(?),但这个我不太确定。有人能告诉我为什么会这样吗?
请让我知道是否需要更多信息来澄清这个问题。
谢谢
编辑1:
下面是一些ajax代码:
$.ajax({
type: "GET",
url: 'http://' + myserver + ':8080/someurl/' + my_param,
contentType: "application/json",
dataType: "jsonp",
jsonpCallback: 'callback',
success: function(data) {
// Inside here, I am doing some Datatables stuff.
var myTable = $('#my_table').dataTable( {
"bJQueryUI" : true,
"bSort" : false,
"bFilter" : false,
"bPaginate": true,
"bProcessing": true,
"bScrollCollapse": true,
"bInfo": false,
"bDestroy": true,
"aaData": samples,
"sEmptyTable": "No sample listings avaiable",
"iDisplayLength": number,
"bLengthChange": false,
"bAutoWidth": false,
.
.
.
}
编辑2:
这是为<code>回调</code>分配名称的类。如果默认回调为空,那么它将分配一个默认值“callback”。但看起来默认的回调总是空的,因此它总是分配“回调”。
public class MappingJacksonJsonpConverter extends MappingJacksonHttpMessageConverter {
@Override
protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException,
HttpMessageNotWritableException {
JsonEncoding encoding = getJsonEncoding(outputMessage.getHeaders().getContentType());
JsonGenerator jsonGenerator = this.getObjectMapper()
.getJsonFactory()
.createJsonGenerator(outputMessage.getBody(), encoding);
try {
String jsonPadding = "callback";
if (object instanceof JsonObject) {
String jsonCallback = ((JsonObject) object).getJsonCallback();
if (jsonCallback != null) {
jsonPadding = jsonCallback;
}
}
jsonGenerator.writeRaw(jsonPadding);
jsonGenerator.writeRaw("(");
this.getObjectMapper().writeValue(jsonGenerator, object);
jsonGenerator.writeRaw(")");
jsonGenerator.flush();
} catch (JsonProcessingException ex) {
throw new HttpMessageNotWritableException("Could not write JSON: " + ex.getMessage(), ex);
}
}
}
上面的类在< code>mvc-servlet.xml中被引用,如下所示:
<mvc:message-converters>
<bean
class="citygrid.feedmanager.web.converter.MappingJacksonJsonpConverter">
<property name="supportedMediaTypes">
<list>
<value>application/x-javascript</value>
</list>
</property>
</bean>
</mvc:message-converters>
正如Alex Ball建议的那样,您需要将AJAX请求放入队列中,以便一个接一个地执行它们。这非常简单,如stackoverflow中的一篇帖子所示(是的,它也适用于JSON-P)。
第二件事是错误消息对象[对象窗口]的属性“回调”不是函数
只是因为你没有一个名为回调
的全局函数。只需像这样定义它:
window.callback= function(responseText) {
//alert(responseText);
};
希望这有帮助。
问题在于jQuery如何使用JSONP进行回调。这个想法是这样的:
现在,如果您不定义自定义<code>jsonpCallback</code>(默认情况下,jQuery为每个JSONP请求分配唯一的回调),一切都可以正常工作。现在,如果您这样做,并且同时触发两个JSONP请求,会发生什么?
Callback
的回调
简单的解决方案是不要覆盖jsonpCallback
选项。
问题内容: 我正在使用开放式天气地图api网络服务进行ajax调用,以便使用纬度和经度获取当前天气,问题是同一调用在我的常规php文件夹中有效,但在我的phongap应用程序中不起作用。我的ajax调用如下所示 我没有尝试将其更改为,但没有任何效果。请帮助我,因为我目前对此仍然感到困惑。 问题答案: 您是否已将config.xml中的网址列入白名单? 了解更多:http : //docs.phon
问题内容: 我正在尝试创建一个书签,单击后将向用户请求一些信息(本例中为url和其他几个字段),然后将该数据发送到服务器上的php页面,然后显示结果。 我想为此进行Ajax调用,以便实际上不重定向到新页面,仅获取数据,但我想我会遇到Ajax的“相同来源策略”限制…。基本上做同一件事的已知方法? 另外,传递参数的最佳方法是什么?我已经有一种机制可以将参数作为表单中的发布消息接收…有什么办法可以重用呢
问题内容: 如果用户查看我的JavaScript文件,复制函数的内容并使用AJAX向我的服务器发送请求,会发生什么情况?有没有办法适当地防止这种情况的发生? 问题答案: 防止这种情况发生的方法与针对 任何 Web请求采取的保护方法没有什么不同。您这样做是为了使您的站点需要某种形式的身份验证(即用户必须登录),并且如果请求未正确身份验证,则不要执行任何操作。 通常,当您发出AJAX请求时,cooki
问题内容: 我想在“ div”中显示txt文件的内容,所以我用按钮调用函数,但是即使我不按按钮,函数也会触发,这是我的HTML代码: 和我的js代码: 问题答案: 的第二个参数应该是一个函数。您没有传递函数,而是立即调用该函数并传递结果。改成:
问题内容: 我有一个网站,我像这样拨打ajax: 所请求的页面除了返回一个数字的状态代码外没有任何作用,并且除IE9之外,在其他所有浏览器上都可以正常运行。该脚本与请求页面托管在同一域中,因此跨域脚本应该没有任何问题。 我终于找到了正在发生的事情,但我不知道如何解决。事实证明,Ajax请求成功完成,没有任何问题。我通过使用Fiddler来查看网络流量来验证了这一点。服务器使用HTTP状态代码200
问题内容: 方案:修改并保存对广告系列的不完整更改 关键是,最后一步中的“错误提示框”是一个ajax调用,它将根据操作成功而带来一个绿色或红色提示框。目前,我要做的是在“然后按保存…”之后,我将进行一次sleep(3),以使其有时间显示此气球。您浪费时间似乎不太明智,也因为在某些时候处理此调用可能花费更多或更少的时间。 你们如何让Behat测试等待Ajax完成,而不仅仅是让野兽入睡? 非常感谢您的