无法在Firefox和IE9中获取数据,但它在Chrome和Safari中运行良好

时间:2011-12-14 10:38:31

标签: javascript ajax json jquery

我有这个方法

 function callCommentservice() {
        try {

            // Comment Service Url
         var getCommentServiceUrl = self.commentsServiceUrl + self.getRating + "tenantId=" + self.tenantId + "&ratedObjectTypeId=" + self.ratedObjectTypeId + "&ratedObjectId=" + self.ratedObjectId + "&ratingType=" + self.ratingType + "&start=" + self.start + "&totalRecordsNeeded=" + self.totalRecordsNeeded;


         $.ajax({
     type: "GET",
             url: getCommentServiceUrl,
             contentType: "application/json",
             timeout: 5000,
             beforeSend: function (xhr) {
                 xhr.setRequestHeader("Accept", "application/json");
             },
         dataType: "json",
             success: function (data) {
                 alert("I m in here.............!!!!");

                 //                    if (success == data) {

                 // Assigning totalRecordsNeeded value to global variable pagination_parameters.pageSize
                 pagination_parameters.pageSize = self.totalRecordsNeeded;

                 //Printing on a console.
                 debug("get comments url: " + getCommentServiceUrl);

                 // Calling Service in order to get data.
                 //                        $.getJSON(getCommentServiceUrl + "&callback=?", function (data) {
                 var emptyCommentHyperlink = document.getElementById('emptyCommentHyperlink');
                 // when there is no comment available in a service than this block will work.
                 if (data.length == 0) {

                     emptyCommentHyperlink.style.display = 'block';
                     //emptyCommentHyperlink.onclick = addCommentsBox;
                     $("#emptyCommentHyperlink").click(addCommentsBox);
                 }
                 else {

                     emptyCommentHyperlink.style.display = 'none';
                 }

                 //printing on a console.
                 debug("Date from the get service:" + data);
                 //alert(data);

                 // Changing date format of a service element AddedDateTime.
                 for (var key = 0; key < data.length; key++) {


                     var dataArray = data[key];

                     // Printing on console.
                     debug("data Array after the data object:" + dataArray);
                     var jsonDate = dataArray.AddedDateTime; //AddedDateTime is the service element.'

                     // Printing on a console.
                     debug("converted Time" + jsonDate);

                     var oneSecond = 1000;       // milliseconds in one seconds
                     // changing format of the AddedDateTime
                     var date = new Date(parseInt(jsonDate.substring(6)));

                     var year = date.getFullYear(); // 2011
                     var day = date.getDay();
                     var exactdate = date.getDate();
                     var month = date.getMonth();
                     var hours = date.getHours();
                     var minutes = date.getMinutes();
                     var month_names_short = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

                     // Fromating Absolute time over tooltip.
                     if (hours > 12) {
                         hours = hours - 12;
                         var exact = zeroPad(hours) + ":" + zeroPad(minutes) + " PM" + ", " + exactdate + " " + month_names_short[month] + " " + year;
                     }
                     else {

                         var exact = zeroPad(hours) + ":" + zeroPad(minutes) + " AM" + ", " + exactdate + " " + month_names_short[month] + " " + year;
                     }

                     // subtracting current date with the comment date.
                     var finalDate = Math.abs(new Date() - date) / oneSecond;

                     dataArray.time_duration = new TimeSpan(finalDate).toString();

                     // Printing on a console.
                     debug("finalDate: " + dataArray.time_duration);

                     //alert(dataArray.time_duration);
                     dataArray.Absolute_Date = exact;

                 }


                 // Extracting TotalCount from service.
                 var totalComments = data[0].TotalCount;
                 // alert(totalComments);


                 //Calling paging Function
                 pages(totalComments);

                 //Making the commenttable empty.
                 $('#commentDiv').empty();

                 // Printing on a console.
                 debug("data before mactache" + data);

                 var comments = { "Comments": data };
                 var html = Mustache.to_html(self.template_html, comments);
                 var target_div = document.getElementById("commentDiv");
                 target_div.innerHTML = html;
                 //alert("target_div");


                 //                        });

             },

             //                },
             error: function (xhr, ajaxOptions, thrownError) {
                 debug(xhr);

                 var errorMsg = document.getElementById('ErrorLable');
                 errorMsg.style.display = "block";
             }
         });
        }

        catch (err) {
            //Printing on a console.
            debug("callCommentservice");
            debug(err);

        }
    }

这个方法在Chrome和Safari中运行正常但在I.E 9和firefox中没有工作,我在firefox请求标题中收到错误405如下: -

  

响应标题允许
  获取内容长度1565   Content-Type text / html;   charset = UTF-8服务器Microsoft-IIS / 7.5 X-Powered-By ASP.NET   Access-Control-Allow-Orig ...... *   Access-Control-Allow-Meth ... POST,GET,   选项Access-Control-Allow-Head ...内容类型,   接受Access-Control-Max-Age 1728000    2011年12月14日星期三10:30:43 GMT

     

请求标头主机services.farooq.tv   用户代理Mozilla / 5.0   (Windows NT 6.1; WOW64; rv:8.0.1)Gecko / 20100101 Firefox / 8.0.1   接受text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8   Accept-Language en-us,en; q = 0.5 Accept-Encoding gzip,deflate   Accept-Charset ISO-8859-1,utf-8; q = 0.7,*; q = 0.7   连接保持活着   来源http://marketplace.softech-lp35.softech.us   Access-Control-Request-Me ... GET   Access-Control-Request-He ... content-type

1 个答案:

答案 0 :(得分:0)

在contentType中存在一个问题:“application / json”,我已将其从$ .ajax函数中删除,现在它正常工作。