JQuery: Как мне прикрепить массив к запросу формы и отправить его в PHP в JQuery - PullRequest
0 голосов
/ 26 октября 2010
var subtbl = $(this).attr('data-counter');
                 var stunbr = $(this).attr('data-stunbr');
                var m = 0;
                var checkedlines = new Array();
            $.each($("#sub-table"+subtbl+"  "+"input:checked"),function (m){            
            var chk_value = $("#chk_"+stunbr+"_"+m).attr('value');
                var txt_value = $("#txt_"+stunbr+"_"+m).attr('value');
              //alert("Txt value --->"+ txt_value +" Chk Value --->"+ chk_value);           
            checkedlines[m] = { STUNBR: stunbr, SNO: chk_value, NAME: txt_value }; 
                m++;          
        });

Как iattach "checklines" сформировать запрос в jquery и отправить его на php Можем ли мы создать этот массив n Json любым методом, доступным в Jquery для создания JSON Как я могу потреблять это в php, если это простой массив. Еще тоньше Как перебрать массив «checkedlines []» снаружи каждого цикла без использования переменной «var r = 0»

    var r=0;
    $.each(checkedlines,function(r){
        alert("ASNURNNBR==>"+checkedlines[r]['STUNBR']+"SEQNO==>"+checkedlines[r]['SNO']+"RCVDATY==>"+checkedlines[r]['NAME']);
        r++;
    });

Ответы [ 2 ]

1 голос
/ 27 октября 2010

хорошо, вот что вы можете сделать.Я создал пример, чтобы показать вам, как это работает.На самом деле используется не serializeArray, а объект JSON:

///// если вы используете IE6, вам придется включить в файл html следующий файл js: https://github.com/douglascrockford/JSON-js /////

// JAVASCRIPT $ (document) .ready (function () {var names = ["John", "Mike", "Joe"]; var местоположения = ["flash"), "php", "javascript"];

var arr = new Array();
for (var i = 0; i < positions.length; i++){
    arr.push({"firstname": names[i], "position": positions[i] });
};

var json = JSON.stringify(arr);

$.ajax({
  url: "data.php",
  method:"GET",
  data: "json="+json,
   success: function(data){alert("data: "+data);},
  dataType: "text"
});

});

// DATA.PHP $ decoded = json_decode ($ _ GET ['json']);echo $ decoded [0] -> firstname;

, который работает!

1 голос
/ 26 октября 2010

Один из вариантов - сериализация объекта в строку JSON и запись результата в скрытое поле внутри формы, которую пользователь может отправить.

<form>

 ...

<input id="json_array" type="hidden" name="json_array" />

 ...

</form>


<script type="text/javascript">

function stringify(obj) {
    var t = typeof (obj);
    if (t != "object" || obj === null) {
        // simple data type
        if (t == "string") obj = '"'+obj+'"';
        return String(obj);
    }
    else {
        // recurse array or object
        var n, v, json = [], arr = (obj && obj.constructor == Array);
        for (n in obj) {
            v = obj[n]; t = typeof(v);
            if (t == "string") v = '"'+v+'"';
            else if (t == "object" && v !== null) v = stringify(v);
            json.push((arr ? "" : '"' + n + '":') + String(v));
        }
        return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
    }
};

var checkedLines = {};

//
// Your code populating the checkLines object goes here
//

var jsonResult = stringify(checkedlines);

$('#json_array').val(jsonResult);

</script>

Функция stringify () взята из библиотеки JSON.org .

Если вы не хотите использовать форму, тогда да, $ .ajax (); это путь Просто добавьте jsonResult к свойству данных с соответствующим именем переменной:

$.ajax({
  method: "POST",
  url: 'http://example.com',
  data: "json_array=" + jsonResult,
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...