web-dev-qa-db-fra.com

comment envoyer plusieurs données avec $ .ajax () jquery

j'essaie d'envoyer plusieurs données à l'aide de la méthode j query $ .ajax à mon script php, mais je ne peux transmettre que des données uniques lorsque je concaténerai plusieurs données. envoyé j’ai besoin de savoir comment formater plusieurs données pour l’envoyer successivement au script de traitement en nom vale pair voici ce que j’ai écrit

<script>
  $(document).ready(function() {

    $('#add').click(function () {

      var name = $('#add').attr("data_id");

      var id = $('#add').attr("uid");

      var data = 'id='+ id  & 'name='+ name; // this where i add multiple data using  ' & '

      $.ajax({
        type:"GET",
        cache:false,
        url:"welcome.php",
        data:data,    // multiple data sent using ajax
        success: function (html) {

          $('#add').val('data sent sent');
          $('#msg').html(html);
        }
      });
      return false;
    });
  });
</script>



<span>
  <input type="button" class="gray_button" value="send data" id="add" data_id="1234" uid="4567" />
</span>
<span id="msg"></span>
40
sohaan

Vous pouvez créer un objet de paires clé/valeur et jQuery fera le reste pour vous:

$.ajax({
    ...
    data : { foo : 'bar', bar : 'foo' },
    ...
});

De cette façon, les données seront correctement encodées automatiquement. Si vous voulez concocter votre propre chaîne, assurez-vous d'utiliser encodeURIComponent(): https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent

Votre code actuel ne fonctionne pas car la chaîne n'est pas concoctée correctement:

'id='+ id  & 'name='+ name

devrait être:

'id='+ encodeURIComponent(id) + '&name='+ encodeURIComponent(name)
85
Jasper

Changer var data = 'id='+ id & 'name='+ name; comme ci-dessous,

utilisez ceci à la place .....

var data = "id="+ id + "&name=" + name;

ça va bien marcher :)

9
var data = 'id='+ id  & 'name='+ name;

L'esperluette doit également être citée:

var data = 'id='+ id  + '&name='+ name;
6
xbonez
var my_arr = new Array(listingID, site_click, browser, dimension);
    var AjaxURL = 'http://example.com';
    var jsonString = JSON.stringify(my_arr);
    $.ajax({
        type: "POST",
        url: AjaxURL,
        data: {data: jsonString},
        success: function(result) {
            window.console.log('Successful');
        }
    });

Cela fonctionne pour moi depuis un certain temps. 

5
Chad
var value1=$("id1").val();
var value2=$("id2").val();
data:"{'data1':'"+value1+"','data2':'"+value2+"'}"
5
hadi.sh

Je recommanderais d'utiliser un hash au lieu d'une chaîne de paramètres:

data = {id: id, name: name}
3

vous pouvez utiliser FormData

regardez mon extrait de MVC 

var fd = new FormData();
fd.append("ProfilePicture", $("#mydropzone")[0].files[0]);// getting value from form feleds 
d.append("id", @(((User) Session["User"]).ID));// getting value from session

$.ajax({
    url: '@Url.Action("ChangeUserPicture", "User")',
    dataType: "json",
    data: fd,//here is your data
    processData: false,
    contentType: false,
    type: 'post',
    success: function(data) {},
1
Basheer AL-MOMANI
  var value1=$("id1").val();
  var value2=$("id2").val();
    data:"{'data1':'"+value1+"','data2':'"+value2+"'}"

Vous pouvez utiliser cette méthode pour transmettre des données

0
chamina
var CommentData= "u_id=" + $(this).attr("u_id") + "&post_id=" + $(this).attr("p_id") + "&comment=" + $(this).val();
0
Badshah Sahib