Я разрабатываю программу Qt, содержащую приложение OpenStreetMap, в виде HTML-страницы, и эта страница имеет доступ к базе данных -via, представляющей форму ajax, которая содержит даты начала и окончания запросов - для получения и визуализации запросов на карте. Я хотел бы переместить этот процесс запросов в Qt из части HTML/Javascript. До сих пор мне удалось взаимодействовать с браузером через Qt, но у меня все еще есть проблема, которая ниже:Qt Webkit - Взаимодействие с браузером
1) Нажмите кнопку запроса на выборку Qt и появится окно предупреждения, в котором говорится, что Ajax POST не удался - база данных не находится на моем текущем ноутбуке, и я должен получить ошибку, когда я нажимаю кнопку запроса на выборки окна браузера HTML или кнопку выборки Qt.
2) Но также, когда я нажимаю кнопку «Запросы на выборку» HTML-браузер, он отображает предупреждение POST, но также отображает дополнительные предупреждающие сообщения POST в зависимости от того, сколько раз я нажал кнопку Qt's Fetch queries. например, если я нажал кнопку запроса на выборку Qt 5 раз подряд, а затем один раз нажал кнопку выборки окна HTML, я получил 6 сообщений об ошибках POST в строке.
Код HTML выглядит следующим образом:
<form id="ajaxForm" action="index.php" method="post">
Start <input type="text" name = "date1" id = "datepicker" value = "2011-07-13" style = "width:70px">
<input type="text" name = "time1" id = "timepicker1" value = "00:00" style = "width:40px">
End <input type="text" name = "date2" id = "datepicker2" value = "2011-07-13" style = "width:70px">
<input type="text" name = "time2" id = "timepicker2" value = "00:01" style = "width:40px">
сообщение метод AJAX формы заключается в следующем:
<script type="text/javascript">
$(document).ready(function(){
// ajaxForm submit
$('#ajaxForm').submit(function() {
$.ajax({
type: 'POST',
url: 'heatQuery.php',
data: $(this).serialize(),
dataType: 'json',
success: function(response)
{
// update the points for heatmap layer
updateHeatMap(response);
},
error: function(errorMsg)
{
alert('Error in Ajax POST');
}
});
return false;
});
});
</script>
И, наконец, код Qt, который вызывает функцию заключается в следующем:
void MainWindow::onButtonClicked() // clicking the button in order to POST
{
//the QString a is the same ajax post function as declared above
QString a = "$(document).ready(function(){$('#ajaxForm').submit(function() {$.ajax({type: 'POST',url: 'heatQuery.php',data: $(this).serialize(),dataType: 'json',success: function(response){updateHeatMap(response);},error: function(errorMsg){alert('Error in Ajax POST');}});return false;});});";
this->view->page()->mainFrame()->evaluateJavaScript(a);
}
Любые идеи о том, что здесь не так? Благодарю.
Вашего HTML-файл вы загружаете в QWebView находится на локальном пути? Я имею в виду, что URL вашего HTML-файла? – Ammar
@Ammar да, это похоже на следующее: C: /project/project/index.html - Я пробовал два отдельных пути с пробелами и без них в именах, все равно получил тот же результат - – bremmS
И в вашем javascript-коде вы 've given' url: heatQuery.php ', что означает, что QWebview ожидает, что он будет локальным путем, где находится ваш HTML-файл. Там он присутствует? Это должно быть что-то вроде «localhost: /path/to/heatQuery.php», если вы используете локальный сервер. В противном случае "www.website.com/path/to/heatQuery.php". – Ammar