Мои настройки выглядят так:
- База данных SQLite находится в одной из моих папок Apache
- Сценарий Perl cgi находится в той же папке с общедоступными разрешениями, так чтоон может обрабатывать взаимодействия с базой данных
- Программа переменного тока, работающая на той же машине, прослушивает определенный порт для определенных запросов JSON и отвечает специально отформатированными данными JSON
Веб-страница, написаннаяв основном в jQuery и HTML, должен иметь постоянный доступ к базе данных SQLite и программе на Си.Это делается с использованием запросов AJAX - вот пример из кода:
function sendCommand(cmd, callback) {
$.ajax({url: "http://192.168.42.90:6112/?cmd=" + cmd,
dataType: "jsonp",
success: function(d,s,x) {
callback(d);
},
jsonpCallback: "json",
error: function(xhr) {
alert('Error: ' + xhr.status);
}
});
}
Так что я мог бы вызвать его с помощью чего-то вроде sendCommand ("get_x", updatePosition) - так, чтобы он отправлял get_xвведите команду вместе с программой на C и, если она получит хороший отзыв, запустите указанный отзыв с помощью функции updatePosition.
Так что все это работает ОТЛИЧНО, если я работаю на веб-странице на том же компьютере.Если я перееду на другую машину - в данном случае, в частности, на телефон Android, который выполняет привязанный IP через USB, это ... вроде как работает.Это то, что меня озадачивает - оно не перестает молчать, как я привык к JavaScript.Вместо этого, насколько я могу судить, он отправляет запрос, утверждает, что получил данные обратно, и запускает функцию обратного вызова - только, согласно программе на C, ничего не происходило;согласно Wireshark, пакеты не были отправлены;и «данные», которые он возвращает, представляют собой пустую, специально отформатированную строку.Если я ожидаю, что "(5,5)" будет выводиться из C, он получит "(0,0)" - почему он вообще что-то получает?Гораздо меньше заполнения "(,)" нулями?
Очень странно.Я пробовал разные мелочи, такие как изменение dataType на «json», проверка правильности всех моих разрешений и т. Д. Я вполне уверен, что Apache не вмешивается, так как в логах ничего нет - чтоменя понимает, что я ничего не вижу на Wireshark.Как будто телефон просто не пытается сделать запрос.