2010-01-08 4 views
1

Je veux ajouter l'attribut href à la fin d'une URL:jQuery ajouter attr à la fin de chaîne

Cela devrait être assez facile. C'est ce que j'ai, mais je pense que quelque chose ne va pas.

$('.delete-code').click(function() { 
    var row = $(this).parent().parent(); 
    $.ajax({ 
     type: "POST", 
     url: "http://website.com/admin/home/deleteCode/"+$(this).attr('href'), 
     data: $(this).attr('href'), 
     success: function() { 
      $(row).hide(); 
     } 
    }); 
    return false; 
}); 

Cela fonctionne quand je coder en dur dans le href

+0

Pouvez-vous poster le code complet pour cela? – rahul

+0

quelle sortie obtenez-vous et quelle sortie attendez-vous? – cobbal

+0

Mis à jour. C'est un simple appel ajax. –

Répondre

2

Votre code devrait fonctionner. Le problème est l'URL. Certains navigateurs doivent obtenir 200 OK pour appeler le rappel de succès.

Essayez de changer:

url: "http://website.com/admin/home/deleteCode/"+$(this).attr('href'), 

à:

url: "http://www.flickr.com/search/?q="+$(this).attr('href'), 

Il devrait fonctionner.

Aussi, vous voudrez peut-être changer quelques petites choses:

  1. La propriété de données est redondant et ne fonctionnent pas avec de jolies urls hors de la boîte.
  2. jQuery dispose d'une méthode $ .get pour effectuer des requêtes GET. Le plus proche ('tr') plutôt que parent(). Parent() rendra votre code plus lisible.
  3. href est un attribut de l'élément, il est possible d'accéder directement DOM creux

Alors peut-être cela peut être une meilleure option en fonction de ce que vous avez besoin:

$('.delete-code').click(function() { 
    var tr= $(this).closest('tr') 
    $.get("http://www.flickr.com/search/?q=" + this.href, 
     function(){ 
      tr.hide() 
     }) 
    return false 
}) 

Bonne chance.

+0

Ce n'était pas une solution, mais c'est la meilleure réponse, alors je vous récompense! –

0

Il n'y a rien de mal avec votre code, c'est probablement juste votre traversée DOM ou la façon dont vous faites votre AJAX.

et Julio Protzek est juste, à moins que vous utilisez une fonction d'erreur ou si vous voulez faire un XMLHttpRequest synchrone (un cas assez rare), vous pourriez tout aussi bien dire

$('.delete-code').click(function() { 
    var row = $(this).parent().parent(); 
    $.get(
     "http://website.com/admin/home/deleteCode/"+$(this).attr('href'), 
     {}, // or { data: $(this).attr('href') }, if you needed to send that 
     success: function() { 
      $(row).hide(); 
     } 
    }); 
    return false; 
}); 

et rappelez-vous, à moins que. delete-code s'applique à un élément <a class="delete-code">, c'est un élément différent que vous essayez d'obtenir le .attr('href').

Questions connexes