jQuery-Sendezeichenfolge als POST-Parameter


96

Ich möchte einen String als Ajax-Post-Parameter senden.

Der folgende Code:

$.ajax({
   type: "POST",
   url: "http://nakolesah.ru/",
   data: 'foo=bar&ca$libri=no$libri',
   success: function(msg){
     alert('wow'+msg);
   }
});

Funktioniert nicht. Warum?


2
Ich sehe, dass Sie ein PHP-Entwickler sind und ich sehe auch, dass Sie dies getan haben : ca$libri=no$libri. Überprüfen Sie hier nur, ob Sie sicher sind, dass Sie nicht versehentlich versuchen, PHP-Konstruktionen dort zu verwenden, wo JS-Konstruktionen sein sollten. Wenn Sie den Wert der $libriVariablen in diese Zeichenfolge aufnehmen möchten , versuchen Sie Folgendes : 'foo=bar&ca' + $libri + '=no' + $libri.
Baumgesicht

nono :) ich verstehe alle Momente der Erzeugung von js durch PHP :) es sind die Namen der Ajax-Variablen in APS. Ich erstelle einen Parser, der eine Site mit Ajax analysiert. Und jetzt habe ich warum Fehler. Es ist Coz Crossdomain-Abfrage. Ich muss zuerst eine Abfrage auf meinem Server erstellen :)
Mirgorod

Antworten:


180

Versuchen Sie es so:

$.ajax({
    type: 'POST',
    // make sure you respect the same origin policy with this url:
    // http://en.wikipedia.org/wiki/Same_origin_policy
    url: 'http://nakolesah.ru/',
    data: { 
        'foo': 'bar', 
        'ca$libri': 'no$libri' // <-- the $ sign in the parameter name seems unusual, I would avoid it
    },
    success: function(msg){
        alert('wow' + msg);
    }
});

1
sollten es nicht Daten sein: {foo: 'bar'}, ohne Apostroph '?
Marius Stănescu

6
@MariusStanescu, beide sind äquivalente äquivalente Javascript-Syntax.
Darin Dimitrov

3
auch ziemlich sicher, dass das $ im ca $ libri vollkommen in Ordnung ist
Michael Crook

Beantwortet die Frage bezüglich der Veröffentlichung als Zeichenfolge nicht :(, siehe unten Antwort.
Andrew

Das funktioniert aber nicht: foo: 'bar'. Ich habe 2 Tage ohne Grund verbracht. Ich habe die Zeichenfolgen nicht auf beiden Seiten hinzugefügt !!!
Eugen Sunic

39
$.ajax({
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg){
        alert('wow' + msg);
    }
});

15
Aus diesem Grund bin ich hierher gekommen, um herauszufinden, wie $ .post-Daten als Zeichenfolge gesendet werden. Die akzeptierte Antwort hilft mir dabei überhaupt nicht. Danke.
ChiliNUT

Einverstanden, ich hatte auch eine Situation, in der eine Zeichenfolge für ein Framework erforderlich war, das ich entwickelte, gute Antwort. In meiner Situation konnte ich dies erreichen, indem ich die Zeichenfolge in eine Variable neben data: setzte. Das Format meiner Zeichenfolge war '? Var = value & var2 = value2'
Joseph Astrahan

13

Ich sehe, dass sie Ihre Frage nicht verstanden haben. Die Antwort lautet: Fügen Sie Ihrem Ajax-Aufruf den folgenden "traditionellen" Parameter hinzu:

$.ajax({
  traditional: true,
  type: "POST",
  url: url,
  data: custom ,
  success: ok,
 dataType: "json"
});

Und es funktioniert mit Parametern, die als Zeichenfolge übergeben werden.


Vielen Dank! Das rettet meinen Tag!
Dat TT

11

Für eine ähnliche Anwendung musste ich mein dataObjekt folgendermaßen JSON.stringify()umschließen:

data: JSON.stringify({ 
  'foo': 'bar', 
  'ca$libri': 'no$libri'
}),

Die API arbeitete mit einem REST-Client, konnte ihn jedoch nicht mit jquery ajax im Browser zum Laufen bringen. stringify war die Lösung.


Warum mussten wir das tun?
Renoir Reis

Nicht sicher, aber einige Zeichen in der Antwort dürfen nicht als Zeichenfolgen betrachtet werden, es sei denn, sie werden erzwungen.
Dylan Valade

4

Ich bin mir nicht sicher, ob dies noch aktuell ist. Nur für zukünftige Leser. Wenn Sie Ihre Parameter wirklich als Teil der URL übergeben möchten, sollten Sie wahrscheinlich jQuery.param () verwenden .


1

Keine direkte Antwort auf Ihre Frage. Aber das Folgende ist die einzige Syntax, die früher für mich funktioniert hat -

data: '{"winNumber": "' + win + '"}',

Und der Parametername stimmt mit dem Argument der Servermethode überein


1

Ich habe mich auch genau diesem Problem gestellt. Aber ich habe eine Lösung und es hat perfekt funktioniert. Ich musste die Parameter übergeben, die bereits von der Javascript-Funktion erzeugt wurden. Der folgende Code funktioniert also für mich. Ich habe ColdFusion für das Backend verwendet. Ich habe die Parameter nur direkt als Variable verwendet.

                    $.ajax({
                    url: "https://myexampleurl.com/myactionfile.cfm",
                    type: "POST",
                    data : {paramert1: variable1,parameter2: variable2},
                    success: function(data){
                        console.log(data);                              
                    } )};

0

Ich hatte das Problem, einen Zeichenfolgenwert an Zeichenfolgenparameter in Ajax zu übergeben. Nach so viel googeln habe ich eine benutzerdefinierte Lösung wie unten gefunden.

var bar = 'xyz';
var calibri = 'no$libri';

$.ajax({
   type: "POST",
   dataType: "json",
   contentType: "application/json; charset=utf-8",
   url: "http://nakolesah.ru/",
   data: '{ foo: \'' + bar + '\', zoo: \'' + calibri + '\'}',
   success: function(msg){
       alert('wow'+msg);
   },
});

Hier sind bar und kalibri zwei Zeichenfolgenvariablen, und Sie können jeden Zeichenfolgenwert an die jeweiligen Zeichenfolgenparameter in der Webmethode übergeben .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.