2011-01-26 15 views
0

これは本当に驚いています。jQueryとYUIを使用した多次元配列の送信

私はjQueryとYUIを使用していますが、json経由でphpに多次元配列を送信しようとしていますが、何らかの理由でテキストを取得してaスパンから配列に入れることはできません! Go figure!どのように試しても、私はそれを追加できないようです。私が手動で平日にテストデータを追加する場合0 =それは何らかの理由で動作しますが、スパンからテキストを取得することはありません!

クリック作品に

警告およびスパンの外に情報を出力するが、私は、コンソールのロゴをチェックすると、私は配列を示す、以下の画面を得る

function checkDay(checkbox) { 
    var checked = '0'; 
    if ($('#' + checkbox).is(':checked')) { 
     checked = '1'; 
    } else { 
     checked = '0'; 

    } 
    return checked; 
} 


var WeekDays = new Array(7); 
WeekDays[0] = new Array(); 
WeekDays[0][0] = checkDay('chxMonday'); 
WeekDays[0][2] = $('#results22Monday').text(); 
WeekDays[1] = new Array(); 
WeekDays[1][0] = checkDay('chxTuesday'); 
WeekDays[1][3] = new Array(); 
WeekDays[1][4] = $('#results22Tue').text(); 
WeekDays[2] = new Array(); 
WeekDays[2][0] = checkDay('chxWednesday'); 
WeekDays[2][5] = $('#results22Wednesday').text(); 
WeekDays[3] = new Array(); 
WeekDays[3][0] = checkDay('chxThursday'); 
WeekDays[3][6] = $('#results22Thursday').text(); 
WeekDays[4] = new Array(); 
WeekDays[4][0] = checkDay('chxFriday'); 
WeekDays[4][7] = $('#results22Friday').text(); 
WeekDays[5] = new Array(); 
WeekDays[5][0] = checkDay('chxSaturday'); 
WeekDays[5][8] = $('#results22Saturday').text(); 
WeekDays[6] = new Array(); 
WeekDays[6][0] = checkDay('chxSunday'); 
WeekDays[6][9] = $('#results22Sunday').text(); 



WeekDays = YAHOO.lang.JSON.stringify(WeekDays); 


$('#btnUpdateSettings').click(function() { 
    alert($('#results22Tue').text()); 
    $.ajax({ 
     data: { 
      contactID: d.act_contactID, 
      apiCPolicy: $('[name=txtCpolicy]').val(), 
      apiNewRegistrations: $('[name=rdoRegister]').val(), 
      apiInterval: $('[name=cboBooking]').val(), 
      apiMaxDate: $('[name=cboMaxDate]').val(), 

      apiTimes: WeekDays, 

      method: 'updateWebBooking', 
      dataType: 'json' 
     }, 
     success: function() { 
      console.log("welldone, you've updated!"); 
     }, 
     error: function() { 
      alert("ooooppps!"); 
     } 
    }); 
}); 

配列値を設定するように見えることはできません空です。

enter image description here

私はテキストが表示されますが、そのないようにするスペースをマークしました!それはとても怒っている。同じことが他のすべての配列は

あなたは本当に私を助けているはずだ任意のアイデア

UPDATE

警告は以下のショーとしての仕事と出力を行いますが、そのわずか配列に追加されていない結果のために行きます! enter image description here

私はまだそれが追加されていない賢明ではないです。

UPDATE本当に奇妙だ

、私は以下のいずれかに設定されたインデックスを持っていますが、私は疑問にインデックスが変更した最初の時間を自分のコードを貼り付けたときに!奇妙な!とにかく、配列のインデックスが正しいときには動作しません!

var WeekDays = new Array(7); 
      WeekDays[0] = new Array(); 
      WeekDays[0][0] = checkDay('chxMonday'); 
      WeekDays[0][1] = $('#results22Monday').text(); 
      WeekDays[1] = new Array(); 
      WeekDays[1][0] = checkDay('chxTuesday'); 
      WeekDays[1][1] = new Array(); 
      WeekDays[1][1] = $('#results22Tue').text(); 
      WeekDays[2] = new Array(); 
      WeekDays[2][0] = checkDay('chxWednesday'); 
      WeekDays[2][1] = $('#results22Wednesday').text(); 
      WeekDays[3] = new Array(); 
      WeekDays[3][0] = checkDay('chxThursday'); 
      WeekDays[3][1] = $('#results22Thursday').text(); 
      WeekDays[4] = new Array(); 
      WeekDays[4][0] = checkDay('chxFriday'); 
      WeekDays[4][1] = $('#results22Friday').text(); 
      WeekDays[5] = new Array(); 
      WeekDays[5][0] = checkDay('chxSaturday'); 
      WeekDays[5][1] = $('#results22Saturday').text(); 
      WeekDays[6] = new Array(); 
      WeekDays[6][0] = checkDay('chxSunday'); 
      WeekDays[6][1] = $('#results22Sunday').text(); 

UPDATE

は、[OK]を私はおそらくので、これを達成するはるかに説得力の方法があると私はみんなにあなたに私が何をしようとしているにあなたを埋めるために、より包括的な質問を与える必要が感じています。おそらくこれを表示するための最良の方法は以下の画像です。私は、テーブルの更新ボタンを押すと、それはフォームの前に設定された特定の増分であるチェックボックスを含むテーブルで、右側の空白の領域を入力します。このチェックボックスは、その日のチェックボックスがオンになっているかどうかとともに保存します。日がチェックされていない場合は、テーブルをクリアして、その日のデータはデータベースに送信されません。ザッツはなぜ私は多次元配列に保存して、それらをシリアル化したかったが、私は」それは

enter image description here enter image description here enter image description here enter image description here enter image description here

+0

この週を削除する[1] [1] = new Array(); – naveen

答えて

0

に動作するように取得することができます私は知らないが、あなたはしたいかもしれませんYAHOO.lang.JSON.stringify()の代わりに.serializeArray()を使用してください。

とあなたの関数checkDay()が良く、このように書かれて

function checkDay(checkbox) { 
    return $('#' + checkbox).is(':checked') ? 1 : 0; 
} 

し、あなたの問題に、私はあなただけ.ready()ハンドラ

デモ

with .ready()でラップを忘れてしまったと思われる - 作品OK、テキストを警告します。

without .ready() - このテキストはアラートに登録されませんでした。

問題が解決しない場合は、問題の解決に役立つと思われる情報やコードが必要になることがあります。

1

$( '#results22Monday')。text();
私の意見では、.text()が原因です。
ご覧のとおり、JSONは正しい形式(7,2配列)で作成され、checkDay関数は値を正しく入力しています。

そうのHTMLElementはresults22Mondayなどである

  1. を確認してください?
  2. テキストがありますか?またはval()が必要ですか?

ああ、私たちは7 x 2の配列が必要でしたか?

もしそうなら、子配列のインデックス付けはすべて間違っています。
この1行を変更して、最初の値がFirebugコンソールに表示されているかどうかを教えてください。
WeekDays[0][1] = $('#results22Monday').text();

WeekDays[0][2] = $('#results22Monday').text();
我々は、子配列の2番目の要素としていくつかにresults22Mondayを望んでいた参照してください(すなわち、インデックス1時)

私はまた、あなたの一番上の部分を書き換えますそのような多くのクリーナー以来、このようなコードです。

function checkDay(checkbox) { 
    return ($('#' + checkbox).is(':checked')) ? '1' : '0'; 
} 


var WeekDays = new Array(7); 
WeekDays[0] = [checkDay('chxMonday'), $('#results22Monday').text()]; 
WeekDays[1] = [checkDay('chxTuesday'), $('#results22Tue').text()]; 
WeekDays[2] = [checkDay('chxWednesday'), $('#results22Wednesday').text()]; 
WeekDays[3] = [checkDay('chxThursday'), $('#results22Thursday').text()]; 
WeekDays[4] = [checkDay('chxFriday'), $('#results22Friday').text()]; 
WeekDays[5] = [checkDay('chxSaturday'), $('#results22Saturday').text()]; 
WeekDays[6] = [checkDay('chxSunday'), $('#results22Sunday').text()]; 

//as its not a good practice to re-initialise the same variable 
var jsonedWeekDays = YAHOO.lang.JSON.stringify(WeekDays); 
+0

上記のアップデートをチェックしてください。しかし、私がテキストに警告すると、値が戻ってきます。 –

+0

上記のコードを試してもまだ動作していないので、別の角度からアプローチできるかどうかを調べるために、より包括的な説明を投稿します –