it-swarm.com.de

So übergeben Sie Parameter in GET-Anforderungen mit jQuery

Wie sollte ich Abfragezeichenfolgenwerte in einer jQuery-Ajax-Anforderung übergeben? Ich mache sie derzeit wie folgt, aber ich bin sicher, dass es einen saubereren Weg gibt, bei dem ich nicht manuell kodieren muss.

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

Ich habe Beispiele gesehen, bei denen Abfragezeichenfolgeparameter als Array übergeben werden, aber diese Beispiele verwenden nicht das Modell $.ajax(), sondern gehen direkt zu $.get(). Zum Beispiel:

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

Ich ziehe es vor, das Format $ .ajax () zu verwenden, da ich es gewohnt bin (kein besonders guter Grund - nur eine persönliche Präferenz).

Edit 09/04/2013:

Nachdem meine Frage geschlossen war (als "Too Localized"), fand ich eine verwandte (identische) Frage - mit 3 Upvotes no-less (Mein schlechtes Verhalten, weil ich sie überhaupt nicht gefunden habe):

Wie kann man mit jquery einen POST erstellen?

Dies hat meine Frage perfekt beantwortet, ich fand, dass es auf diese Weise viel einfacher zu lesen ist und ich encodeURIComponent() nicht manuell in der URL oder den DATA-Werten verwenden muss (was ich in der Antwort des Bipen unklar fand). Dies liegt daran, dass der data-Wert automatisch über $.param() ) codiert wird. Für den Fall, dass dies für alle anderen nützlich sein kann, ist dies das Beispiel, mit dem ich gegangen bin:

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

    },
    error: function(xhr) {

    }
});
190
HeavenCore

Verwenden Sie die Datenoption Ajax. Sie können das Datenobjekt über die Option data in ajax und die Variable type an den Server senden, die definiert, wie Sie es senden (entweder POST oder GET). Der Standardtyp ist GET Methode

Versuche dies

$.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
  }
});

Und Sie können die Daten erhalten durch (wenn Sie PHP verwenden)

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

In aspx glaube ich, dass es ist (möglicherweise falsch)

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

Setzen Sie Ihre Parameter in den Teil data des Aufrufs ajax. Siehe die Dokumente . So wie:

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

Hier ist die Syntax mit jQuery $.get 

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

In Ihrem Fall würde das bedeuten, 

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)

Note$.get gibt Ihnen nicht die Möglichkeit, einen Fehlerbehandler festzulegen. Es gibt jedoch mehrere Möglichkeiten, dies zu tun, indem Sie $ .ajaxSetup () , $ .ajaxError () verwenden oder einen .fail in Ihrem $.get wie folgt verketten 

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

Der Grund für das Festlegen des Datentyps als 'jsonp' ist auf die gleichen Origin-Richtlinienprobleme des Browsers zurückzuführen. Wenn Sie jedoch die Anforderung an dieselbe Domäne richten, in der Ihr Javascript gehostet wird, sollten Sie den Datentyp auf json setzen. 

Wenn Sie die Jquery $.get nicht verwenden möchten, sehen Sie siehe docs für $.ajax, was Raum für mehr Flexibilität lässt 

4
theterminalguy

Versuchen Sie Folgendes hinzuzufügen:

$.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
    }
});

Abhängig davon, welcher Datentyp erwartet wird, können Sie html, json, script, xml zuweisen. 

2
Jai

Mit der Eigenschaft data können Sie eine Zeichenfolge senden. Akzeptieren Sie den Code auf dem serverseitigen Code als Zeichenfolgenargumentname "myVar". Anschließend können Sie ihn analysieren. 

$.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
Danwilliger

Sie können $.ajax() verwenden. Wenn Sie die Parameter nicht direkt in die URL einfügen möchten, verwenden Sie data:. Das wird an die URL angehängt

Quelle: http://api.jquery.com/jQuery.ajax/

0
Sterling Archer

Hatte dasselbe Problem, wo ich data angegeben habe, der Browser jedoch Anforderungen an die URL mit der Bezeichnung [Object object] gesendet hat 

Sie sollten processData auf true setzen. 

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