Ajax-запросы на удаленный сервер по телефонной пробке / локальному jquery или sencha - PullRequest
3 голосов
/ 11 января 2012
Mobile Device(file://..)                      Server

index.html                     <--JSON---   post.php
main.js
sencha_.js or Jquery_.js

Ситуация такая же, как и выше, Все файлы (js, html) находятся на мобильном устройстве с помощью PhoneGap. (File: //.../ www / index.html ...) Это будет показано WebView.

и main.js вызовут $ .ajax () или Ext.Ajax.request () для получения данных json с сервера. (независимо от того, ПОСТ / ПОЛУЧИТЬ)

это возможно? есть междоменная проблема?

Ответы [ 3 ]

1 голос
/ 11 января 2012

Да, это очень возможно.Поскольку ваше приложение PhoneGap запускается из протокола file: //, такая же политика происхождения не применяется, то есть никаких проблем между доменами

1 голос
/ 11 января 2012

Phonegap позволяет делать запросы на любой сервер, вам не нужно использовать какие-либо хакерские решения, он просто работает, если у вас есть следующая строка в AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />   
0 голосов
/ 11 января 2012

Да, но вы не можете использовать нативные методы AJAX.

Один из способов создания кросс-браузерных подключений - создать тег script и проанализировать все параметры с помощью метода обратного вызова: GET only

var url = "http://myPage.com/service.php?parem1=abc&parem2=def&callback=MY_CALLBACK";

window.MY_CALLBACK = function( response ) {
    // Here response have all your data.
}

var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);

http://myPage.com/service.php

<?
    Doing a lot of server site code...

    echo $_GET['callback'] . "(" . $dataToPass . ");";
?>

$_GET["callback"] - это MY_CALLBACK, наш метод javascript в глобальном масштабе.

Надеюсь, вы сможете понять идею.

Если вы используете фреймворк, я думаю, что почти у всех есть способ сделать это.

JQuery

var url = "http://myPage.com/service.php?parem1=abc&parem2=def";
$.ajax({
    "url": url,
    "dataType": "jsonp",
    "success": function(response) {
        // Here response have all your data.
    }
});

но у вас нет обработчика ошибок: (

Вы используете плагин jQuery.jsonp , чтобы получить обработчик ошибок: From: http://code.google.com/p/jquery-jsonp/wiki/TipsAndTricks

$.jsonp({
  "url": "http://gdata.youtube.com/feeds/api/users/"+userId+"?callback=?",
  "data": {
      "alt": "json-in-script"
  },
  "success": function(userProfile) {
      // handle user profile here 
  },
  "error": function(d,msg) {
      alert("Could not find user "+userId);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...