Почему я не могу вернуть JQuery POST в другой домен? - PullRequest
0 голосов
/ 04 сентября 2011

Когда я использую json в моем $ .ajax, все, что я получаю, это красный 200 в firebug, и данные вставляются в базу данных, однако я не получаю возвращение JSON.

Когда я использую jsonp, я даже не могу отправить страницу.

Вот мой код:

<html> 
    <head> 
    <title>Register</title> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css" />
    <link rel="stylesheet" type="text/css" href="http://dev.jtsage.com/cdn/datebox/latest/jquery.mobile.datebox.min.css" /> 




    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script>
    <script type="text/javascript" src="http://dev.jtsage.com/cdn/datebox/latest/jquery.mobile.datebox.min.js"></script>



<script type="text/javascript">
    $(document).ready(function() {

                     $("#contactus").submit(function(event) {

                $.ajax({
                    type: "POST",
                    url: "http://apsessionmobile.mobi/index.php/api/apsessionmobile/user/",
                    data: $("#contactus").serialize(),
                    dataType: 'jsonp',

                    success: function(msg){
                     //   jQuery("#status").html(msg);
                    alert(msg);
                    }
        })
    })
});
</script>

</head> 
<body> 



<div data-role="page" data-theme="e">

    <div data-role="header" data-position="fixed">
        <h1>Register</h1>
        <a href="home.html" data-icon="back" class="ui-btn-left" data-rel="back">Back</a>
        <a href="home.html" data-icon="home" class="ui-btn-right">Home</a>
    </div><!-- /header -->

    <div data-role="content">   

    <div align="center">

    <form action="JavaScript:void(0);" name="contactus" id="contactus">


    <div id="fnameDiv" data-role="fieldcontain">


        <label for="username">Create User Name:</label>     
        <input id="username" name="username" type="text" />


        <label for="email">Email:</label>       
        <input id="email" name="email" type="text" />



        <label for="password">Password:</label>     
        <input id="password" name="password" type="password" />



        <label for="password2">Repeat Password:</label>     
        <input id="password2" name="password2" type="password" />




        <button type="submit">Register</button>



    </div>




    </form>

    </div>

    </div><!-- /content -->

    <div data-role="footer" data-id="thefooter" data-position="fixed">
        <h4></h4>
    </div><!-- /footer -->
</div><!-- /page -->

</body>

Ответы [ 2 ]

0 голосов
/ 04 сентября 2011
  1. JSONP работает только для запросов GET, потому что JSONP просто включает script элемент в HTML, который загружает страницу, которая содержит JSON с отступом (обратным вызовом), который обрабатывает указанные данные JSON. И затем снова удаляет элемент script.

  2. Я недостаточно знаком с jQuery, так что это будет дикое предположение. Но, вероятно, происходит то, что скрытая форма передается в скрытый iframe с внешним запросом. Это работает частично, поскольку данные отправляются успешно, за исключением того, что скрытый iframe теперь используется другим доменом, JavaScript не может прочитать содержимое и, следовательно, не может проанализировать ответ JSON внутри.

0 голосов
/ 04 сентября 2011

междоменные запросы не разрешены через ajax. Тем не менее, попробуйте использовать сетевой инспектор, чтобы увидеть, если:
1) запрос делается при отправке формы
2) что отправлено
3) какой контент возвращается (если есть)

если есть проблемы с междоменным доступом или любая другая ошибка js, консоль должна сообщить вам об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...