我正在编写聊天应用程序,并希望在第一次聊天通话中获取所有后续AJAX通话的设置。
我设置了默认的jQuery AJAX设置:
jQ.ajaxSetup({
url : 'chat.php',
contentType: 'application/json'
dataType : 'json',
type : 'post'
});
然后我传递操作以返回包含要连接到特定聊天的数据的JSON对象。
jQ.ajax({
data: {
'action' : 'connect'
},
success: function (data) {
if (data.success) {
// set user ID and chat ID for all subsequent ajax calls
if (data.partner) {
// start fetching data to listen for messages
} else {
// keep checking for partner
}
} else {
// chat connect failed
}
}
});
如果聊天已创建并且用户已连接到聊天伙伴,则每隔0.2秒我会从服务器获取数据,如下所示:
setTimeout(fetchData, 200);
function fetchData(){
jQ.ajax({
data: {
'action' : 'fetch'
},
success: function (data) {
if (data.success) {
// update messages
}
setTimeout(fetchData, 200);
});
}
我还有AJAX功能来发布数据并断开聊天,基本上他们都需要拥有初始“连接”操作设置的相同聊天凭据。
实现这一目标的最佳方式是什么?
答案 0 :(得分:1)
创建一个包含全局范围内的凭据的对象,然后根据需要使用该操作扩展它。
var credentials = {};
使用第一个ajax请求更新该对象,然后后续的只会添加到对象:
credentials.action = "fetch";
...
data: credentials,
...
除非您添加的不仅仅是操作,否则您实际上并不需要扩展它。否则,用:
扩展它data: $.extend({},credentials,{ action: "fetch", foo: "bar" }),
答案 1 :(得分:0)
请记住,您正在向ajax
函数提供JSON对象。
您可以将设置存储在变量中,如下所示:
var ajax_settings = {
data: { ... },
success: function(data) { ... },
};
在ajax调用中使用它:
$.ajax(ajax_settings);
连接后或根据需要更改ajax_settings
变量。