jQuery AJAX POST sans les éléments de formulaire?

Je n'ai pas beaucoup d'expérience avec des appels AJAX, mais mon exemple semble simple (sauf que je ne suis pas à l'aide d'un élément) et il me fait me demander si je suis en train de faire l'appel de mal, ou si vous ne pouvez pas faire une requête AJAX POST sans une forme.

Mon code HTML du bouton que j'utilise est: est-ce

<button class="btn btn-primary btn-small" id='saveAsNewName' onclick=saveAsNewName()>Save As</button>

Mon JS:

function saveAsNewName(str, id) {
var values = {
        'str'       : str,
        'id'        : id,
};
$.ajax({
    url: "saveAsNewName.php",
    type: "POST",
    data: values,
    dataType: 'JSON',
    success: function(data){
        alert("success" + data);
    }
})
.done(function(data) {
    alert("success" + data);
})
.fail(function(data) {
    alert("failure" + data);
});
}

Et, pour l'instant, mon php est, tout simplement, ce pour tester si cela fonctionne:

echo json_encode($_POST['id']));

Je reçois la notification de défaillance à chaque fois que je clique sur mon bouton. Est-t-il une solution de contournement j'ai besoin pour ne pas utiliser un formulaire, ou suis-je nettoie la base .ajax exemple?

Modifier, pour être clair: je suis en utilisant un autre ensemble de jQuery pour mettre à jour en permanence teh arguments pour saveAsNewName(). Le résultat est un appel comme:

onclick="saveAsNewName("wheyjuice 555", "33541")"

comme un résultat de cette jQuery code:

$(document).on('keyup',"[class*=editSimNameField]", function() { 
    var newText = $(this).val(); var id = $(".loadWindow").val();       
    $("#saveAsNewName").attr('onclick', 'saveAsNewName(\"' + newText + '\", \"' + id + '\")'); 
}); 
Où est-il l'obtention de la str et id info?
ajouté ça à l'OP. Oublié que c'est mis à jour dynamiquement via jquery

OriginalL'auteur bo_knows | 2014-06-02