jQuery送信文字列をPOSTパラメータとして


96

文字列をajax Postパラメータとして送信したい。

次のコード:

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

動かない。どうして?


2
あなたはPHP開発者であることがわかりましたca$libri=no$libri。ここで確認するだけです...あなたが誤ってJSがそうであるはずの場所でPHP構造を使用しようとしていないのですか?$libri変数の値をこの文字列に含める場合は、次を試してください'foo=bar&ca' + $libri + '=no' + $libri
treeface

nono :)私はphpによってjsを生成するすべての瞬間を理解します:)これはAPSのajax変数の名前です。ajaxでいくつかのサイトを解析するパーサーを作成します。そして今、私はなぜエラーを取得しました。これはcozクロスドメインクエリです。まずサーバーにクエリを作成する必要があります:)
Mirgorod

回答:


180

このようにしてみてください:

$.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
データであってはなりません:{foo: 'bar'}、アポストロフィなし '?
MariusStănescu2013年

6
@MariusStanescu、どちらも同等の同等のJavaScript構文です。
Darin Dimitrov

3
また、ca $ libriの$が完全に問題ないことを確認してください
Michael Crook

:(文字列として掲載についての質問に答えていない、答えは下記を参照してください。
アンドリュー

これは動作しますが、動作しません:foo: 'bar'。私は無理に2日間過ごしました。両側に文字列の標識を追加しませんでした!!!
Eugen Sunic 2016年

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

15
これが、$。postデータを文字列として送信する方法を見つけるためにここに来た理由です。受け入れられた答えは私にはまったく役立ちません。ありがとうございました。
chiliNUT 14年

同意しましたが、開発中のフレームワークに文字列が必要な状況もありました。良い答えです。私の状況では、データの隣の変数に文字列を置くことでこの作業を行うことができました。私の文字列の形式は '?var = value&var2 = value2'でした
Joseph Astrahan

13

彼らはあなたの質問を理解していなかったようです。答えは、次のように「従来の」パラメーターをajax呼び出しに追加します。

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

そして、それは文字列として渡されるパラメーターで動作します。


ありがとう!これは私の日を救います!
Dat TT

11

同様のアプリケーションでは、dataオブジェクトを次のJSON.stringify()ようにラップする必要がありました。

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

APIはRESTクライアントで動作していましたが、ブラウザーでjquery ajaxを使用して機能させることができませんでした。stringifyが解決策でした。


なぜこれをしなければならなかったのですか?
ルノワールレイス

確かではありませんが、応答内の一部の文字は、強制されない限り文字列と見なしてはなりません。
Dylan Valade 2016

4

これがまだ現実のものであるかどうかはわかりません。将来の読者のためだけです。URLの一部としてパラメーターを渡すことが本当に必要な場合は、おそらくjQuery.param()を使用する必要があります 。


1

あなたの質問への直接の答えではありません。しかし、以下は私のために使用された唯一の構文です-

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

そして、パラメーター名はサーバーメソッドの引数と一致します


1

私もこの正確な問題に直面しました。しかし、私には解決策があり、それは完全に機能しました。私はすでにJavaScript関数によって生成されたパラメーターを渡す必要がありました。だから以下のコードは私のために働いています。バックエンドにはColdFusionを使用しました。パラメータを変数として直接使用しました。

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

0

Ajaxで文字列パラメーターを文字列パラメーターに渡す際に問題に直面していました。たくさんググリングした後、私は以下のようなカスタムソリューションを考え出しました。

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);
   },
});

ここで、barcalibriは2つの文字列変数であり、任意の文字列値をWebメソッドのそれぞれの文字列パラメーターに渡すことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.