iPhone应用程序和arduino无法使用Ajax通话

保罗·海曼斯

我创建了一个Arduino项目,将坐标发送到URL。该URL会进行一些Ajax调用。在浏览器中,它工作正常,但是当我在Arduino上尝试时,它不起作用。因此,我尝试使用iOS应用程序执行相同的操作,但是遇到了相同的问题。这是Arduino和iOS应用程序请求的页面上的代码。

var directionsService = new google.maps.DirectionsService();
var base_url = window.location;
var received_data = <?php echo json_encode($received_data); ?>;

$.ajax({
    url: 'http://gps-tracker.domain.nl/_api/handler.php',
    data: { action: 'post', device_id: received_data['device_id']},
    type: 'GET',
    dataType:"jsonp",
    jsonp:"callback",
    success: function (response){
        var error = [];
        var total = response.length;

        for (var type in response) {

            if(response[type].types == 'area'){

                var x = checkInsideCircle(response[type].longitude, response[type].latitude, received_data['longitude'], received_data['latitude'], response[type].reach / 1000); 

                if(x == false){
                    // Outside
                    error.push(true);
                }else{
                    // Inside
                    error.push(false);
                }
            }else if(response[type].types == 'route'){

                // Check route
                checkOnRoute(response[type].start_latitude, response[type].start_longitude, response[type].end_latitude, response[type].end_longitude, response[type].type, response[type]['reach'], type, function(result) {

                    error.push(result);

                    if(error.length == total){

                        if(error.indexOf(false) >= 0){

                            // Device is inside route or area
                            outside = false;
                        }else{
                            // Send data to database
                            $.ajax({
                                url: 'http://gps-tracker.domain.nl/_api/handler.php',
                                data: { action: 'post', device_id: received_data['device_id'], longitude: received_data['longitude'], latitude: received_data['latitude']},
                                type: 'GET',
                                dataType: 'json',
                                success: function (response){
                                    console.log('good');
                                },error: function(jq,status,message) {
                                    alert('A jQuery error has occurred. Status: ' + status + ' - Message: ' + message);
                                }
                            });
                        }
                    }
                });
            }
        }
    },error: function(jq,status,message) {
        alert('A jQuery error has occurred. Status: ' + status + ' - Message: ' + message);
    }
});

这是ajax请求请求的来自handler.php文件的代码。

$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : false;

// Switch actions
switch($action) {
    case 'get':
        $callback ='callback';

        if(isset($_GET['callback'])){
            $callback = $_GET['callback'];
        }

        $routes = ORM::for_table('gps_tracker_route')
                ->inner_join('gps_tracker_device', array('gps_tracker_device.device_id', '=', 'gps_tracker_route.device_id'))
                ->where('gps_tracker_route.device_id', $_GET['device_id'])
                ->where('gps_tracker_device.device_id', $_GET['device_id']);

        if($routes = $routes->find_many()){
            foreach($routes as $k=>$v){
                $v = $v->as_array();

                if($v['status'] == 'on' or strtotime(date('Y-m-d H:i:s')) > strtotime($v['start_time']) and strtotime(date('Y-m-d H:i:s')) < strtotime($v['end_time'])){
                    $response1[$k] = $v;
                    $response1[$k]['types'] = 'route';
                } 
            }
        }

        $area = ORM::for_table('gps_tracker_area')
            ->inner_join('gps_tracker_device', array('gps_tracker_device.device_id', '=', 'gps_tracker_area.device_id'))
            ->where('gps_tracker_area.device_id', $_GET['device_id'])
            ->where('gps_tracker_device.device_id', $_GET['device_id']);

        if($area = $area->find_many()){
            foreach($area as $k=>$v){
                $v = $v->as_array();

                if($v['status'] == 'on' or strtotime(date('Y-m-d H:i:s')) > strtotime($v['start_time']) and strtotime(date('Y-m-d H:i:s')) < strtotime($v['end_time'])){
                    $response2[$k] = $v;
                    $response2[$k]['types'] = 'area';
                } 
            }
        }

        if(isset($response1) and isset($response2)){
            $response = array_merge($response1, $response2);
        }elseif(isset($response1)){
            $response = $response1;
        }else{
            $response = $response2;
        }

        if ( isset($response) ) {

            if ( is_array($response) ) {
                if (function_exists('json_encode')) {
                    header('Content-Type: application/json');

                    echo $callback.'(' . json_encode($response) . ')';
                } else {
                    include( ABSOLUTE_PATH . '/classes/json.class.php');
                    $json = new Services_JSON();
                    echo $json->encode($response);
                }
            } else {
                echo $response;
            }
            exit(0);
        }else{
            exit();
        }
    break;
    case 'post':

        $_GET['timestamp'] = date("Y-m-d H:i:s");

        $record = ORM::for_table('gps_tracker_device_logging')->create($_GET);
        $record->save();

        $item = ORM::for_table('gps_tracker_device_logging')
        ->where('id', $record->id);


        if($item = $item->find_one()){

            $item = $item->as_array();

            echo json_encode($item);
        }

    break;
    default:
        die('invalid call');
}

有人能帮我吗?

编辑

我认为这与Javascript有关。我不知道当诸如Arduino之类的设备向服务器发出http请求时是否可以使用javascript。有人知道吗

我认为这是因为您需要一个支持JavaScript的Web浏览器。我不使用Arduino,但据我所知,它没有“真正的” Web浏览器-它只能提取/下载数据,而不能执行JS部分。为了使JS工作,您需要一些东西来运行它。这就是为什么它可以在浏览器中工作的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使用Xcode 6 Beta上传iPhone应用程序

来自分类Dev

无法使用iPhone访问我的Web应用程序

来自分类Dev

iPhone应用程序因电池使用和热量而被拒绝

来自分类Dev

无法仅在Xcode 6中为iPhone 5和iPhone 4设计应用程序

来自分类Dev

Ajax称无法使用Facebook Canvas应用程序

来自分类Dev

Arduino使用hc05蓝牙模块启动和关闭程序。蓝牙无法接收我使用蓝牙终端应用程序发送的信息

来自分类Dev

Swift Xcode 6中来自应用程序的iPhone通话

来自分类Dev

使用SimpleXML和minifyEnabled的应用程序无法正常工作

来自分类Dev

应用程序无法使用 Polymer 和 Angular 4

来自分类Dev

我无法将 VS-2017 应用程序(Android 和 IOS)部署到 iphone

来自分类Dev

来自应用程序的通话活动

来自分类Dev

iOS通话记录应用程序

来自分类Dev

来自应用程序的通话活动

来自分类Dev

无法通过 Android 应用程序向 Arduino 发送字符

来自分类Dev

使用Pow运行Rails应用程序时,似乎无法从iPhone访问.xip.io URL

来自分类Dev

使用xcode 7调试后无法在iPhone 5中打开应用程序

来自分类Dev

当应用程序在后台和iPhone重新启动时如何使用ibeacon

来自分类Dev

我可以为iPhone和iPad使用两个单独的应用程序吗?

来自分类Dev

iOS应用程序无法填充iPhone屏幕

来自分类Dev

iPad无法正确缩放iPhone应用程序

来自分类Dev

iOS iPhone应用程序无法在iPad上填充屏幕

来自分类Dev

setObjectForKey:对象无法在iPhone应用程序中崩溃

来自分类Dev

Web应用程序无法在iPhone上运行-如何调试?

来自分类Dev

无法在我的iPhone应用程序中调节音量

来自分类Dev

iPad无法正确缩放iPhone应用程序

来自分类Dev

无法在 iPhone 上运行 ionic3 应用程序

来自分类Dev

Expo 应用程序 IPA 无法在我的 iphone 上运行

来自分类Dev

允许iOS应用程序用户通过Twilio号码,解析后端彼此通话和发短信

来自分类Dev

iPhone 6上的iOS应用程序“无法验证该应用程序”

Related 相关文章

  1. 1

    无法使用Xcode 6 Beta上传iPhone应用程序

  2. 2

    无法使用iPhone访问我的Web应用程序

  3. 3

    iPhone应用程序因电池使用和热量而被拒绝

  4. 4

    无法仅在Xcode 6中为iPhone 5和iPhone 4设计应用程序

  5. 5

    Ajax称无法使用Facebook Canvas应用程序

  6. 6

    Arduino使用hc05蓝牙模块启动和关闭程序。蓝牙无法接收我使用蓝牙终端应用程序发送的信息

  7. 7

    Swift Xcode 6中来自应用程序的iPhone通话

  8. 8

    使用SimpleXML和minifyEnabled的应用程序无法正常工作

  9. 9

    应用程序无法使用 Polymer 和 Angular 4

  10. 10

    我无法将 VS-2017 应用程序(Android 和 IOS)部署到 iphone

  11. 11

    来自应用程序的通话活动

  12. 12

    iOS通话记录应用程序

  13. 13

    来自应用程序的通话活动

  14. 14

    无法通过 Android 应用程序向 Arduino 发送字符

  15. 15

    使用Pow运行Rails应用程序时,似乎无法从iPhone访问.xip.io URL

  16. 16

    使用xcode 7调试后无法在iPhone 5中打开应用程序

  17. 17

    当应用程序在后台和iPhone重新启动时如何使用ibeacon

  18. 18

    我可以为iPhone和iPad使用两个单独的应用程序吗?

  19. 19

    iOS应用程序无法填充iPhone屏幕

  20. 20

    iPad无法正确缩放iPhone应用程序

  21. 21

    iOS iPhone应用程序无法在iPad上填充屏幕

  22. 22

    setObjectForKey:对象无法在iPhone应用程序中崩溃

  23. 23

    Web应用程序无法在iPhone上运行-如何调试?

  24. 24

    无法在我的iPhone应用程序中调节音量

  25. 25

    iPad无法正确缩放iPhone应用程序

  26. 26

    无法在 iPhone 上运行 ionic3 应用程序

  27. 27

    Expo 应用程序 IPA 无法在我的 iphone 上运行

  28. 28

    允许iOS应用程序用户通过Twilio号码,解析后端彼此通话和发短信

  29. 29

    iPhone 6上的iOS应用程序“无法验证该应用程序”

热门标签

归档