Проблемы с jQuery Ajax в Firefox и Chrome, Opera (хорошо работает в Safari)

#jquery #ajax #firefox #google-chrome #browser

#jquery — запрос #аякс #firefox #google-chrome #браузер #jquery #ajax

Вопрос:

У меня есть небольшой HTML-код с помощью jQuery. В моем коде я вызываю простой ajax-вызов. Это хорошо работает в Safari, но работало в Firefox и Chrome.

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>untitled</title>
    <meta name="generator" content="TextMate http://macromates.com/">
    <meta name="author" content="Daniel">
    <!-- Date: 2011-11-07 -->

    <script type='text/javascript' src='http://media.smashingmagazine.com/themes/smashing/js/jquery-1.5.2.min.js?ver=3.1.3'></script>
    <script type='text/javascript' src='http://media.smashingmagazine.com/themes/smashing/js/jquery-ui-1.8.2-min.js?ver=3.1.3'></script>
</head>

<script type="text/javascript">
    var jwt = "";
    var certUrl = "";

    function getJwt() {
        $.get(
            "http://signerapp.appspot.com/signerapp",
            function(data) { jwt = data;}
        );
    }
    function checkAvailable() {
        var postObject = {};
        postObject.certUrl = certUrl;
        postObject.jwt = jwt;
        postObject.action = "available";
        postObject.shortUrl = $('#shortUrl').attr('value');
        $.ajax( {
                    url: "http://clickin-shorturl.appspot.com/urlshortener/v1/url",
                    type: "POST",
                    data: JSON.stringify(postObject),
                    success: function(data) { alert(data); }
                });
    }
    $(document).ready(function() {
        getJwt();
    });
</script>
<body>
</br>
</br>
</br>
</br>
</br>
<h4>This is sample for creating url shortener</h4>
<p>Check available:</p>
<div>
    <!-- Check availability-->
<table border="1" width="540" height="100%">
    <!-- Check availability-->
    <tr>
        <td>
            <form>
                Action: <input type="textbox" id="action1" name="action1" value="available" disabled="disabled" size="20"></br>
                Short URL: <input type="textbox" id="shortUrl" name="shortUrl" value="aaaa" size="20"></br>
                <input type="button" id="checkButton" name="checkButton" value="Check Available" onClick="checkAvailable();"></br>
            </form>
        </td>
    </tr>
    <tr>
</table>

</div>

</body>
</html>
  

Проблема заключается в вызове $.get и $.ajax выше.
С Safari я получаю точный результат: строку base64 в $.get и json в $.ajax
Но с Firefox я ничего не могу получить, Хотя код ответа «200 OK», тело действительно содержало что угодно.

Ответ №1:

это из-за той же политики origine. вы не можете загрузить другой контент веб-сайта с помощью ajax-запроса. если вы хотите это сделать, вы должны использовать JSONP для этого. или вы можете использовать прокси-сервер на стороне сервера для этого.

Ответ №2:

вы можете использовать firebug в Firefox или элемент проверки Chrome, чтобы найти дополнительную информацию об ошибке