2017-10-09 4 views
1

Existe-t-il un moyen de publier des attributs autres que la valeur sur une autre page?Attribut de post-entrée (valeur non-value) à la page de remerciements

Pour exemple: Si je <option value="Bulgaria" data-key="BG" data-geo="EMEA">Bulgaria</option>

Je sais que je peux poster la valeur et obtenir sur la vous avec $ _POST,

merci mais si je voulais obtenir les données clés à la place de la valeur?

+1

Copie possible de [$ \ _ POST autre attribut que valeur] (https://stackoverflow.com/questions/11579608/post-another-attribute-than-value) –

+0

utiliser formdata et l'envoyer – guradio

Répondre

0

Vous pouvez seulement poster le value (sauf si vous utilisez AJAX et un peu de manipulation). Si vous optez pour la route JavaScript, ce serait atteint avec quelque chose comme ceci:

$('form').submit(function(e) { 
    data = {}; 
    url = ''; 
    e.preventDefault(); 
    $('input', this).each(function() { 
    var pcs = $(this).data(); 
    var datakey = $(this).attr('data-key'); 
    if (undefined == data[datakey]) { 
     data[datakey] = {}; 
     data[datakey]['_'] = $(this).val(); 
    } 
    $.each(pcs, function(k, v) { 
     data[datakey][k] = v; 
    }); 
    }); 
    $.ajax({ 
    url: url, 
    data: data, 
    type: "POST" 
    }).done(function() { 
    // data-key successfully POSTed 
    }); 
}); 

La meilleure question est pourquoi essayez-vous de faire? Si vous voulez seulement une sortie de BG, utilisez-la comme value. Si vous voulez les deuxBulgaria et BG, vous pouvez utiliser une entrée caché d'envoyer en plus les données secondaires (comme value):

<input type="hidden" name="shortcode" value="BG" /> 
+0

Pourquoi signaler comme doublon puis copiez quelques-unes des réponses ici de toute façon? – ishegg

+0

Servir de panneau pour une question similaire. –

+0

Vous pouvez publier les autres attributs * sans * Ajax si vous avez un gestionnaire 'submit' ou' change' qui copie l'attribut pertinent dans une entrée cachée. – nnnnnn

1
$("#myselect option:selected").data("key") or 
$("#myselect option:selected").attr("data-key") 

Mais vous devez envoyer des valeurs par js insted de forme html envoyer

0

simple, vous pouvez l'essayer:

HTML:

<form ... method="post" onsubmit="return form_check()"> 
    <input type="hidden" name="data_key" id="data_key"> 
    <input type="hidden" name="data_geo" id="data_geo"> 
    ... 
    <button type="submit">Submit</button> 
</form> 

jQuery:

function form_check() { 
    $('#data_key').val($('#myselect option:selected').data('key')); 
    $('#data_geo').val($('#myselect option:selected').data('geo')); 
    return true; 
} 

alors dans votre PHP vous les recevez dans $_POST['data_key'] et $_POST['data_geo'].