dougu9895 2013-05-09 10:59
浏览 61

在获取CORS数据时在firefox中我们只能使用jsonp或脚本但是如果无法获取数据那么它会显示语法错误

php code

<?php
$data = trim(api_get('threads',array(),'JSON'));
echo $_GET['jsonp_callback'] . '(' . $data . ');';
?>

js code

<script>
$.ajax({
              url: "https://abc.secure.tttt.com/",
              data:{},
              dataType: 'jsonp',
              cache: false,
              crossDomain: true,
              jsonp : "jsonp_callback",
              success: function(params){
                    console.log('showInbox');
                    //console.log(JSON.parse(params));
                    showInbox(params);
              },
              error: function (xhr, textStatus, thrownError) {
                console.log('Inside showInbox ajax failure');
                console.log(xhr.status);
                console.log(textStatus);
                console.log(JSON.stringify(xhr));
                console.log(thrownError);
              }


});

this is working fine, if the API is giving json data and if there an error, it is showing syntax error:

Timestamp: 5/9/2013 4:28:24 PM
Error: SyntaxError: syntax error
Source File: https://abc.secure.tttt.com/?jsonp_callback=jsonp1368095332316&_=1368097103961
Line: 1
Source Code:
<!DOCTYPE html>
  • 写回答

1条回答 默认 最新

  • dongyi1939 2013-05-09 11:12
    关注

    Use timeout property to get error function executed on error.

    $.ajax({
                  timeout : 2000,
                  url: "https://abc.secure.tttt.com/",
                  data:{},
                  dataType: 'jsonp',
                  cache: false,
                  crossDomain: true,
                  jsonp : "jsonp_callback",
                  success: function(params){
                        console.log('showInbox');
                        //console.log(JSON.parse(params));
                        showInbox(params);
                  },
                  error: function (xhr, textStatus, thrownError) {
                    console.log('Inside showInbox ajax failure');
                    console.log(xhr.status);
                    console.log(textStatus);
                    console.log(JSON.stringify(xhr));
                    console.log(thrownError);
                  }
    
    
    });
    

    In most browsers there is no way of telling if the JSONP request succeeded, other than a timeout. Of course set it to a reasonable value, I use 2 seconds guessing if the server doesn't return the file in this time, something is wrong.

    评论

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)