0

すべてのループ結果を1つにまとめてから、ajaxを使用してすべてを1回だけ送信しようとしています。

詳細な説明のためのコードは次のとおりです。

<div class='item'>Name1</div>
<div class='item'>Name2</div>

jquery

$(".item").each(function(){
  var value = $(this).text();
});

^これは、Name1とName2の両方を返しますが、一度には返しません。両方をajaxリクエストに送信できるように、それらをマージする必要があります。

これは私が望む方法です(無効なコード)

$(".item").each(function(){
  var value1 = $(this[0]).text(); // even tho i dont wanna use numbers, i wanna all of them
  var value2 = $(this[1]).text();
   var final = value1 + value2; // Name1Name2
});
    $.get('go.php', {items : final}, function(...

これは無効なコードです^
最初の問題で終了する方法の例を示すためだけに、マージです。どのようにすべきかわかりません。次に、ループの外側からvar final
を呼び出して、繰り返さないようにします。リクエスト

4

5 に答える 5

0
$('.item').text()​​;

これは出力として返さName1Name2れます。

ライブデモ

編集:

すべての回答に対するすべてのコメントを調べた後、あなたがこれを探している可能性があることを理解しました。

var customTextArray = [ "AAA", "BBB" ];
var final = "";
i = 0;
$('.item').each(function() {
    final += $(this).text();
    if (customTextArray.length != i)
        final += customTextArray[i++];

});

$(".result").text(final);​

出力:

Name1AAAName2BBBName3

別のLIVEDEMO2を参照してください

于 2012-06-04T15:24:11.300 に答える
0

$.map()jQueryオブジェクトのすべての要素を文字列の配列に変換するために使用します。

var values = $(".item").map(function() {
    return $(this).text();
}).get();
// values = ["Name1", "Name2"]

または、を使用することもできますjQuery.map()

var values = $.map($(".item"), function(item) {
    return $(item).text();
});
// values = ["Name1", "Name2"]

次に、値を配列としてPHPスクリプトに送信して、でPHP配列として取得できるようにします$_POST["items"]

$.get("go.php", {items : values}, function() { ... });

または、最初に配列を単一の文字列に結合して、PHP文字列として受け取ることができます。

var joinedValues = values.join(",");
// joinedValues = "Name1,Name2"
$.get("go.php", {items : joinedValues}, function() { ... });
于 2012-06-04T15:25:26.120 に答える
0

$.mapを使用できます

var arr =  $(".item").map(function(){
             return $(this).text();
           }).get();

この後は、あなたが望むarrように、あなたはそれを得ることができます['Name1','Name2']Name1Name2

arr.join('')

ただし、後でそれらを分離したい場合は、_またはのような区切り文字を使用してそれらを結合することをお勧めします,。だからあなたがName1_Name2使用したい場合.join('_')

次に、次arrのように使用します

$.get('go.php', {items : arr.join('_')}, function(...
于 2012-06-04T15:23:18.773 に答える
0

final関数の外部で宣言して、グローバル変数にします。

于 2012-06-04T15:23:21.417 に答える
0

フィドル: http: //jsfiddle.net/iambriansreed/Wf3SF/

試す:

var final = [];
$(".item").each(function(){
   final.push(this.innerHTML);
});

または:

var final = $('.item').map(function() {
    return this.innerHTML;
}).get();

またはあなたがあなたのコメントで述べたように:

var items = $('.item').map(function() {
    return this.innerHTML;
}).get();

var final = "Something1" + items[0] + "Something2" + items[1];

または最後にこのように:

$('.item').each(function(i) {
    window['value'+(i+1)] = this.innerHTML;
});

var final = "Something1" + value1 + "Something2" + value2;

$.get('go.php', {'items' : final }, function(...
于 2012-06-04T15:23:33.507 に答える