Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与AJAX服务器对话时显示弹出div 我试图在屏幕中间显示弹出窗口,而我的网站与我的Ajax服务器对话。因为有些操作需要几秒钟的时间,所以我想给我的用户一个操作正在发生的视觉提示。例如,您可以在我的网站上创建音乐播放列表。创建播放列表时,我希望弹出一个div,说明正在我的服务器上创建播放列表_Javascript_Html_Ajax_Jquery_Popup - Fatal编程技术网

Javascript 与AJAX服务器对话时显示弹出div 我试图在屏幕中间显示弹出窗口,而我的网站与我的Ajax服务器对话。因为有些操作需要几秒钟的时间,所以我想给我的用户一个操作正在发生的视觉提示。例如,您可以在我的网站上创建音乐播放列表。创建播放列表时,我希望弹出一个div,说明正在我的服务器上创建播放列表

Javascript 与AJAX服务器对话时显示弹出div 我试图在屏幕中间显示弹出窗口,而我的网站与我的Ajax服务器对话。因为有些操作需要几秒钟的时间,所以我想给我的用户一个操作正在发生的视觉提示。例如,您可以在我的网站上创建音乐播放列表。创建播放列表时,我希望弹出一个div,说明正在我的服务器上创建播放列表,javascript,html,ajax,jquery,popup,Javascript,Html,Ajax,Jquery,Popup,我做了一个例子来展示我用来产生这个的函数,但是我有一点相反的效果。在小提琴中,它在尝试与服务器对话后显示弹出窗口(它将无法与服务器对话,因为我拒绝我的域外的任何内容),但由于它无法与服务器对话,因此它从不调用hide\u popup() 在我的服务器上,它甚至从不显示弹出窗口(除非我在show\u popup()调用之后直接调用alert()) 我不知道为什么会发生这种情况,但我只是想 1.显示弹出窗口 2.执行我的AJAX调用 3.隐藏弹出窗口 有什么建议吗?首先,我建议您对Ajax调用使用公

我做了一个例子来展示我用来产生这个的函数,但是我有一点相反的效果。在小提琴中,它在尝试与服务器对话后显示弹出窗口(它将无法与服务器对话,因为我拒绝我的域外的任何内容),但由于它无法与服务器对话,因此它从不调用
hide\u popup()

在我的服务器上,它甚至从不显示弹出窗口(除非我在
show\u popup()
调用之后直接调用
alert()

我不知道为什么会发生这种情况,但我只是想
1.显示弹出窗口
2.执行我的AJAX调用
3.隐藏弹出窗口


有什么建议吗?

首先,我建议您对Ajax调用使用公共库,例如


其次,了解异步Javascript。您对get_server_response()的调用立即返回,无需等待Ajax请求完成。查看jQuery.ajax中的完整参数。它接受一个在您的请求完成时调用的函数——这是隐藏消息的正确位置

首先,我建议您对Ajax调用使用公共库,例如


其次,了解异步Javascript。您对get_server_response()的调用立即返回,无需等待Ajax请求完成。查看jQuery.ajax中的完整参数。它接受一个在您的请求完成时调用的函数——这是隐藏消息的正确位置

您编写代码的方式存在一些问题。以下是其中的几个:

(1)致电:

var response=get\u server\u response(“action=createPlaylist&name=“+name,false”)

您希望立即得到响应,而AJAX调用不会出现这种情况。此外,您正在为
async
参数传递
false
,这使得它实际上是一个
sync
调用。这就是为什么您的代码在执行任何其他操作之前等待的原因

(2)执行:

您只在
响应中缓存结果
,而在跟踪
onreadystatechange
时不处理它。实际上,您正在处理它,它将在调用之后执行,而不是在收到响应时执行。无需在此处返回响应

(3.)弹出窗口:

您没有在适当的位置使用“显示/隐藏”

解决方案

我建议您在通过实现函数跟踪
onreadystatechange
时启动回调。在进行网络呼叫之前显示弹出窗口。根据
readyState
状态将其隐藏在回调函数中

这是一把供你使用的小提琴:


希望能有所帮助。

您编写代码的方式存在一些问题。以下是其中的几个:

(1)致电:

var response=get\u server\u response(“action=createPlaylist&name=“+name,false”)

您希望立即得到响应,而AJAX调用不会出现这种情况。此外,您正在为
async
参数传递
false
,这使得它实际上是一个
sync
调用。这就是为什么您的代码在执行任何其他操作之前等待的原因

(2)执行:

您只在
响应中缓存结果
,而在跟踪
onreadystatechange
时不处理它。实际上,您正在处理它,它将在调用之后执行,而不是在收到响应时执行。无需在此处返回响应

(3.)弹出窗口:

您没有在适当的位置使用“显示/隐藏”

解决方案

我建议您在通过实现函数跟踪
onreadystatechange
时启动回调。在进行网络呼叫之前显示弹出窗口。根据
readyState
状态将其隐藏在回调函数中

这是一把供你使用的小提琴:


希望有帮助。

您使用的是async=false。这个stackoverflow问题()可能会对您有所帮助。您的JSFIDLE示例不起作用,因为您正在执行跨域请求。这也可能是原因,为什么你们会有反作用。您得到了未捕获的错误:NetworkError:DOM异常19,它停止了javascript,所以弹出窗口无法隐藏。无论如何,我认为您解决这个问题的方法是正确的。@Windkiller该方法实际上是错误的。您使用的是async=false。这个stackoverflow问题()可能会对您有所帮助。您的JSFIDLE示例不起作用,因为您正在执行跨域请求。这也可能是原因,为什么你们会有反作用。您得到了未捕获的错误:NetworkError:DOM异常19,它停止了javascript,所以弹出窗口无法隐藏。无论如何,我认为您解决此问题的方法是正确的。@Windkiller该方法实际上是不正确的。我对
get\u server\u response()
的调用不应立即返回,因为我创建了一个名为“async”的变量并将其设置为false。这使得它在返回值之前等待发送完成。他使调用同步。所以javascript在调用被解决之前都会感到震惊。但这是错误的,这就是它不起作用的原因。他的方法是正确的。我对
get\u server\u response()
的调用不应该立即返回,因为我创建了一个名为“async”的变量并将其设置为false。这使得它在返回值之前等待发送完成。他使调用同步。所以javascript在调用被解决之前都会感到震惊。但这是错误的,这就是它不起作用的原因。他的认可
xmlhttp.onreadystatechange = function()
{
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        response = xmlhttp.responseText;
    }
}
xmlhttp.open("POST", ajax_server, async);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(url);
return response;