OpenStreetMap アプリケーションを HTML ページとして含む Qt プログラムを開発しています。このページは、クエリの開始日と終了日を含む ajax フォームを送信してデータベースにアクセスし、クエリを取得して視覚化することができます。地図。このクエリ プロセスを HTML/Javascript 部分から Qt に移動したいと考えています。これまでのところ、Qt を介してブラウザーと対話することができましたが、まだ以下の問題があります。
1) Qt の [クエリのフェッチ] ボタンをクリックすると、Ajax POST が失敗したことを示す警告ボックスがポップアップするはずです。データベースが現在のラップトップにないため、HTML ブラウザー ウィンドウのフェッチをクリックするとエラーが発生するはずです。クエリ ボタンまたは Qt のフェッチ ボタン-
2) また、HTML ブラウザの [クエリを取得] ボタンをクリックすると、POST 警告が表示されますが、Qt の [クエリを取得] ボタンをクリックした回数に応じて、追加の POST 警告アラート ボックスも表示されます。-たとえば、Qt のフェッチ クエリ ボタンを 5 回続けてクリックし、HTML ウィンドウのフェッチ ボタンを 1 回クリックすると、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 フォームの post メソッドは次のとおりです。
<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);
}
ここで何が間違っているかについてのアイデアはありますか? ありがとう。