2

このコードをjqueryに変換する最良の方法は何ですか?私はこの方法でそれを試しましたが、InternetExplorerがこれに問題を抱えていることに気づきました。それで、jQueryでそれを行うことにしましたが、多くのメソッドが表示されますが、それを使用して同じ関数を作成する方法がわかりません。

function updateField(str, id, prevvalue, value, vehicletype) {
    if (str == "") {
        document.getElementById(id).innerHTML = "";
        return;
    }
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById(id).innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "inc/form_rest.php?q=" + str + "&prevvalue=" + prevvalue + "&value=" + value + "&vehicletype=" + vehicletype, true);
    xmlhttp.send();
}
4

8 に答える 8

5

最も簡単なのはgetを使用することです:

$.get("inc/form_rest.php",
    {q:str, prevvalue:prevvalue, value:value, vehicletype:vehicletype},
    function(html){
       $('#'+id).html(html);
    }
);

jQuery に URL を作成させることに注意してください。これにより、URL コーディングが適切に行われることも保証されます。

要素を埋めるためにのみ応答を使用しているため、使用することもできました

$('#'+id).load(
   "inc/form_rest.php?q=" + str + "&prevvalue=" + prevvalue + "&value=" + value + "&vehicletype=" + vehicletype
);
于 2013-02-04T12:02:49.233 に答える
3

非常に簡単です。1 つのメソッドを呼び出すだけです。

function updateField(str, id, prevvalue, value, vehicletype) {
  if (str=="")
  {
    $('#' + id).html("");
    return;
  } 
  $.get("inc/form_rest.php", 
        {"prevvalue": prevvalue, "value":value /*and so on*/},
        function(data) {
          document.getElementById(id).innerHTML = data;  //this is compatible, no jQuery needed!
        }
  );

}
于 2013-02-04T12:03:11.607 に答える
2

GET リクエストを実行しているので、jQuery.get代わりに使用するのが理にかなっています。

$.get("inc/form_rest.php", {
    q : str,
    prevvalue : prevvalue,
    value : value,
    vehicletype : vehicletype
}, function(response) {
    $('#' + id).html(response);
});
于 2013-02-04T12:03:09.993 に答える
0

jQueryを使用している間、ブラウザについて気にする必要はありません。jQueryAjaxget メソッドを使用するだけです。 使用する

$.get('inc/form_rest.php',  // URL
      {q:str, prevvalue:prevvalue, value:value,vehicletype:vehicletype}, // Data
      function(data) {
      // Do post Ajax things here
});
于 2013-02-04T12:00:20.757 に答える
0

試す

$.ajax({
    url: 'inc/form_rest.php?q='+str+'&prevvalue='+prevvalue+'&value='+value+'&vehicletype='+vehicletype,
    method: 'GET',
    success: function(data, textStatus, jqXHR) {
        document.getElementById(id).innerHTML=data;
    }

});

または単純な

$.get('inc/form_rest.php?q='+str+'&prevvalue='+prevvalue+'&value='+value+'&vehicletype='+vehicletype, function(data) {
    document.getElementById(id).innerHTML=data;
});
于 2013-02-04T12:03:13.340 に答える
0

以下を実行します。

  1. ブラウザをチェックしてからxmlhttp オブジェクトを作成するコードを削除します。
  2. xmlhttp.onreadystatechange = functionのような明示的なコールバック メソッドは必要ありません 。
  3. jQuery ajax メソッド呼び出しを直接配置する
于 2013-02-04T12:04:19.843 に答える
0

私はこれがうまくいくと思います:

function updateField(str, id, prevvalue, value, vehicletype){
      var request = $.ajax({
          url: "inc/form_rest.php",
          type: "GET",
          data: { "str" : str, 
                  "prevvalue" : prevvalue, 
                  "value" : value, 
                  "vehicletype" : vehicletype
          },
          'success': function(){
             //successful request
          }
    });
于 2013-02-04T12:06:08.000 に答える
0

あなたの例:

var url = "inc/form_rest.php?q="+str+"&prevvalue="+prevvalue+"&value="+value+"&vehicletype="+vehicletype;

$.get(url,function(data){
 $("#"+id).html(data); 
 });
于 2013-02-04T12:06:28.913 に答える