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?

Mirgorod
quelle
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);
    }
});
Darin Dimitrov
quelle
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);
    }
});
Chakavak Behzad
quelle
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.

vitaly goji
quelle
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.

Dylan Valade
quelle
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 .

egnarts-ms
quelle
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

LCJ
quelle
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);                              
                    } )};
CodeLover
quelle
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 .

Sohel Pathan
quelle