JQuery ile GET isteklerinde parametre iletme


253

Bir jQuery Ajax isteğinde sorgu dizesi değerlerini nasıl iletmeliyim? Şu anda bunları şu şekilde yapıyorum, ancak manuel olarak kodlamamı gerektirmeyen daha temiz bir yol olduğundan eminim.

$.ajax({
    url: "ajax.aspx?ajaxid=4&UserID=" + UserID + "&EmailAddress=" + encodeURIComponent(EmailAddress),
    success: function(response) {
        //Do Something
    },
    error: function(xhr) {
        //Do Something to handle error
    }
});

Sorgu dizesi parametrelerinin bir dizi olarak geçtiği örnekleri gördüm, ancak gördüğüm bu örnekler $.ajax()modeli kullanmıyorlar , bunun yerine doğrudan gidiyorlar $.get(). Örneğin:

$.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } );

Alıştığım gibi $ .ajax () biçimini kullanmayı tercih ederim (özellikle iyi bir neden yok - sadece kişisel bir tercih).

Düzenle 09/04/2013:

Sorum kapatıldıktan sonra ("Çok Yerelleştirilmiş" olarak) ilgili (özdeş) bir soru buldum - 3 upvotes no-less ile (İlk etapta bulamadığım için kötü):

POST yapmak için jquery kullanarak, 'data' parametresi nasıl düzgün şekilde sağlanır?

Bu sorumu mükemmel bir şekilde yanıtladı, bu şekilde yapmanın okunması çok daha kolay olduğunu encodeURIComponent()ve URL veya VERİ değerlerini (bipen'in cevabında belirsiz bulduğum) manuel olarak kullanmam gerekmediğini gördüm. Bunun nedeni, datadeğerin $.param()) üzerinden otomatik olarak kodlanmasıdır . Bu herkes için yararlı olabilir, ben gitti örnek budur:

$.ajax({
    url: "ajax.aspx?ajaxid=4",
    data: { 
        "VarA": VarA, 
        "VarB": VarB, 
        "VarC": VarC
    },
    cache: false,
    type: "POST",
    success: function(response) {

    },
    error: function(xhr) {

    }
});

$ .get sadece $ .ajax için bir kısayoldur
Denys Séguret

dışında, Düzenle 09/04/2013 bir gönderi isteğidir :-) ancak görünüşe göre GET ile aynı şekilde çalışır.
commonpike

Yanıtlar:


309

Ajax veri seçeneğini kullanın. Veri nesnesini sunucuya dataajax'taki seçeneği ile gönderebilirsiniz ve bu nesne typeonu nasıl göndereceğinizi tanımlar (ya POSTda GET). Varsayılan tür GETyöntemdir

Bunu dene

$.ajax({
  url: "ajax.aspx",
  type: "get", //send it through get method
  data: { 
    ajaxid: 4, 
    UserID: UserID, 
    EmailAddress: EmailAddress
  },
  success: function(response) {
    //Do Something
  },
  error: function(xhr) {
    //Do Something to handle error
  }
});

Ve verileri (PHP kullanıyorsanız)

 $_GET['ajaxid'] //gives 4
 $_GET['UserID'] //gives you the sent userid

Aspx'te bunun olduğuna inanıyorum (yanlış olabilir)

 Request.QueryString["ajaxid"].ToString(); 

2
ihtiyacın yok encodeURIComponent. jquery bunu sizin için yapacak.
Lane

2
@KlwWallace Nope. Bu PHP (sunucu tarafı), hangi sunucu tarafı dilini kullandığınıza bağlıdır. PHP'de get isteğinin değerlerini bu şekilde elde ederiz.
bipen

1
@bipen. Anlaşıldı. Kimseyi karıştırmamak için yorumumu sildim. Teşekkürler.
Kirby L. Wallace

jQuery.param () işlevi ile nesneyi GET parametrelerine dönüştürmeniz gerekir, bu nedenle data:$.param({ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress})yerine kullanmanız gereken jQuery'yi kullanmanız gerekirdata: { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress }
Güç Mühendisliği

22

İçinde params Put dataparçası ajaxçağrısı. Belgelere bakın . Şöyle ki:

$.ajax({
    url: "/TestPage.aspx",
    data: {"first": "Manu","Last":"Sharma"},
    success: function(response) {
        //Do Something
    },
    error: function(xhr) {
        //Do Something to handle error
    }
});

10

İşte jQuery kullanarak sözdizimi $.get

$.get(url, data, successCallback, datatype)

Yani sizin durumunuzda bu,

var url = 'ajax.asp';
var data = { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress };
var datatype = 'jsonp';

function success(response) {
// do something here 
}

$.get('ajax.aspx', data, success, datatype)

Not $.get size bir hata işleyici ayarlama fırsatı vermez. Ama birini kullanarak bunu yapmak için çeşitli yolları vardır $ .ajaxSetup () , $ .ajaxError () veya bir zincirleme .failsenin üzerinde $.getgibi aşağıda

$.get(url, data, success, datatype)
 .fail(function(){
})

Veri türünün 'jsonp' olarak ayarlanmasının nedeni tarayıcıyla aynı başlangıç ​​politikası sorunlarından kaynaklanmaktadır, ancak javascriptinizin barındırıldığı aynı alanda istekte bulunuyorsanız, veri türü olarak ayarlanmış olmanız gerekir json.

Eğer Jquery kullanmak istemiyorsanız $.geto zaman docs bakınız için $.ajaxdaha fazla esneklik için yer sağlayan


4

Bunu eklemeyi deneyin:

$.ajax({
    url: "ajax.aspx",
    type:'get',
    data: {ajaxid:4, UserID: UserID , EmailAddress: encodeURIComponent(EmailAddress)},
    dataType: 'json',
    success: function(response) {
      //Do Something
    },
    error: function(xhr) {
    //Do Something to handle error
    }
});

Hangi veri tipinin beklendiğine bağlı olarak, html, json, script, xml


çözümünüz faydalıdır, ancak IDparametre olarak iletmeden önce ( ) değişkenini nasıl tanımlayacağınızı merak ediyorsunuz ? SO'da Q var, stackoverflow.com/questions/41192531/… . Ben şimdi bir jquery iletişim çağırmak ve mysql veri almak için ajax çağırmak bu Q daha da ilerledi. Her veri noktası tıklaması ile ilişkili benzersiz kimliğin nasıl alınacağıyla ilgili bağlantıyı kaçırıyorum . Bana yardım edersen çok sevin. Teşekkür ederim
user5249203

1

Data özelliği bir dize göndermenizi sağlar. Sunucu tarafı kodunuzda "myVar" dize bağımsız değişken adı olarak kabul edin ve sonra ayrıştırabilirsiniz.

$.ajax({
    url: "ajax.aspx",
    data: [myVar = {id: 4, email: 'emailaddress', myArray: [1, 2, 3]}];
    success: function(response) {
    //Do Something
    },
    error: function(xhr) {
    //Do Something to handle error
    }
});

1
Neden yaptın stringify? jQuery ajaxuygulaması sizin için bununla ilgilenir.
Steve

1

Belirttiğim yerde aynı sorun vardı dataama tarayıcı URL ile biten istekleri gönderiyordu [Object object].

processDataAyarlamanız gerekirdi true.

processData: true, // You should comment this out if is false or set to true

OMG, teşekkürler. 4 saat arama ve denemeden sonra nihayet burada bir sorun düzeltildi :-)
Kim K.


-1

Ajax yönteminin data parametresi veriyi sunucu tarafına göndermenizi sağlar.Sunucu tarafında veri talep edebilirsiniz.

var id=5;
$.ajax({
    type: "get",
    url: "url of server side script",
    data:{id:id},
    success: function(res){
        console.log(res);
    },
error:function(error)
{
console.log(error);
}
});

Sunucu tarafında, $ _GET değişkeni kullanarak alın.

$_GET['id'];
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.