2010-02-24 6 views
0

Je possède ce:JS à jQuery au maximum

function createObject() { 
    var request_type; 
    var browser = navigator.appName; 
    if(browser == "Microsoft Internet Explorer"){ 
    request_type = new ActiveXObject("Microsoft.XMLHTTP"); 
    } else { 
    request_type = new XMLHttpRequest(); 
    } 
    return request_type; 
} 

var http = createObject(); 
var nocache = 0; 

function insert() { 
    document.getElementById('insert_response').innerHTML = "To Sek .. " 
    var bID= encodeURI(document.getElementById('bID').value); 
    var kommentar= encodeURI(document.getElementById('kommentar').value); 
    nocache = Math.random(); 
    http.open('get', 'insert.php?bID='+bID+'&kommentar=' +kommentar+'&nocache = '+nocache); 
    http.onreadystatechange = insertReply; 
    http.send(null); 
} 

function insertReply() { 
    if(http.readyState == 4){ 
    var response = http.responseText; 
    document.getElementById('insert_response').innerHTML = response; 
    if ($("#box[value=1]").length > 0) { window.parent.showMessage("Video Is OK"); } 
} 
} 

Et je veux « raccourcir » le code et faire utiliser jQuery au maximum. Par exemple, j'ai entendu parler de serialize(); au lieu d'utiliser http.open etc .., mais comment dois-je l'utiliser dans ce cas?

Et ai-je vraiment besoin de tout cela dans createobject() pour faire le http?

+0

Tout cela devrait être refaits en POST, avec la méthode $ .post. Vous n'avez pas utilisé de post parce que c'est un peu plus complexe quand vous l'écrivez. Maintenant, avec jquery c'est facile et devrait être utilisé – naugtur

Répondre

0

Untested, mais je suis sûr que ce soit ce dont vous avez besoin:

function onInsertComplete(data,textstatus){ 
    $("#insert_response").html(data); 
} 

function doInsert(){ 
    $("#insert_response").html("To Sek..."); 
    var nocache = '0'; 
    var data = { bID : $("#bID").val(), kommentar: $("#kommentar").val(), nocache: nocache }; 
    $.get('insert.php', data, onInsertComplete); 
    if ($("#box[value=1]").length > 0) { 
     window.parent.showMessage("Video Is OK"); 
    } 
} 
+0

Cela fonctionne bien! .. mais il ne fait pas window.parent.showmessage()? – Karem

0

La plupart de ces éléments peuvent être nettoyés en appelant le get method in jQuery. Tout d'abord, les détails propres au navigateur seront abstraits pour vous, vous n'avez donc pas besoin de vérifier comment obtenir XMLHttpRequest.

Vous pouvez ensuite utiliser jQuery pour obtenir des éléments via des sélecteurs. Pour sélectionner un élément par ID, utilisez la syntaxe suivante:

$("#<id>") 

Le hashtag indique que vous souhaitez sélectionner les éléments avec l'ID spécifié. De là, vous pouvez utiliser certains des general attribute functions pour obtenir les valeurs à l'intérieur d'éléments spécifiques.

Enfin, vous pouvez utiliser Javascript's ability to generate closures pour créer et transmettre un comme rappel à la fonction get, qui est exécuté à la fin de l'appel. Vous utiliserez ensuite les mêmes fonctions d'attribut général des sélecteurs pour modifier les valeurs du côté client à la fin de l'appel.

0

Quelque chose sur cette ligne?

http://api.jquery.com/load/

$('#result').load('ajax/test.html', function() { 
    alert('Load was performed.'); 
});