Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Jquery 照片上传超时(如果是';It’时间太长了_Jquery_Ajax_Facebook Php Sdk - Fatal编程技术网

Jquery 照片上传超时(如果是';It’时间太长了

Jquery 照片上传超时(如果是';It’时间太长了,jquery,ajax,facebook-php-sdk,Jquery,Ajax,Facebook Php Sdk,我正在创建一个照相亭应用程序,用户可以在其中共享他们在Facebook帐户上拍摄的照片。大多数情况下,它工作得很好。我正在使用AJAX发布到这个PHP页面: 如果我在回复中从Facebook获得帖子ID,我的Javascript将显示一条成功消息。如果我得到一个没有post ID的回复,它会显示一条错误消息。有时候,无论是Facebook速度慢,还是互联网中断,或者是我无法控制的其他因素,对Facebook的请求一直在处理中,我根本没有得到回复 如果需要很长时间,我想在上传过程中创建一些“仍在

我正在创建一个照相亭应用程序,用户可以在其中共享他们在Facebook帐户上拍摄的照片。大多数情况下,它工作得很好。我正在使用AJAX发布到这个PHP页面:

如果我在回复中从Facebook获得帖子ID,我的Javascript将显示一条成功消息。如果我得到一个没有post ID的回复,它会显示一条错误消息。有时候,无论是Facebook速度慢,还是互联网中断,或者是我无法控制的其他因素,对Facebook的请求一直在处理中,我根本没有得到回复

如果需要很长时间,我想在上传过程中创建一些“仍在工作…”消息,然后是“很抱歉,您的照片无法上传。请刷新页面并重试”,如果需要太长时间。我知道我可以很容易地为jQuery.ajax请求创建超时,但问题是(据我所知),即使超时并且执行了错误回调,请求仍然在服务器上进行。如果由于某种原因,上传原始照片的时间比我的超时时间长,那么当用户刷新页面并成功上传时,他们将拥有一张副本

我提出了一些假设性的解决方案,但不确定如何实现其中任何一个

1) 在一段时间后取消服务器端的上传过程(我很确定这是不可能的),并显示一个错误 2) 上传前检查是否有重复的照片(这似乎不适用于非常缓慢的上传过程)

因此,我只有一个解决办法,那就是希望超时过程永远不会结束。这让我觉得不可靠,可能会导致一些重复。同时,当我试图等待上传的时候,总是比我耐心等待的时间要长


有没有解决这个问题的办法?

这应该是可能的。在try-and-catch异常中首先包装到api调用。还有你 将请求超时更改为更长或更短。这是“取消”的一种方式。您可以在您的base_facebook.php中更改它,并查找CURLOPT_CONNECTTIMEOUT

try {
    $response = $facebook->api("/me/photos", "post", array(
        'message' => $message,
        'image' => '@' . $filePath
    ));
} catch (FacebookApiException $e) {
    var_dump($e);
    // Other error handling
}

不过,我不相信我会得到一个facebook的回复。从我在开发工具中看到的情况来看,页面一直在处理。如果抛出异常,它不会返回错误消息吗?
try {
    $response = $facebook->api("/me/photos", "post", array(
        'message' => $message,
        'image' => '@' . $filePath
    ));
} catch (FacebookApiException $e) {
    var_dump($e);
    // Other error handling
}