3

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);

}

ここで何が間違っているかについてのアイデアはありますか? ありがとう。

4

1 に答える 1

3

私は問題を抱えていると思います。XMLHttpRequestローカルファイルを正常にロードしますが、 に戻ります。これ0が、jQuery コードから起動されるrequest.status理由です。error()

QWebView..で次のサンプルコードを実行しました

var request = new XMLHttpRequest();  
request.open('POST', 'file:///C:/hello.txt', true);

request.onreadystatechange = function(e) {  

    if(request.readyState == 4)
    {
        // 'responseText' will not be empty if file present..
        alert("response text: " + request.responseText);
        alert("status: " + request.status);
    }
}

request.send();

お役に立てれば..

于 2012-05-15T07:13:02.160 に答える