OK У меня есть строка json, но я не уверен, что делать дальше?
$('#submit').live('click',function(){ var dataString = '['; $('#items tr').not(':first').each(function(){ var index = $('#items tr').index(this); var supp_short_code=$(this).closest('tr').find('.supp_short_code').text(); var project_ref=$(this).closest('tr').find('.project_ref').text(); var om_part_no=$(this).closest('tr').find('.om_part_no').text(); var description=$(this).closest('tr').find('.description').text(); var cost_of_items=$(this).closest('tr').find('.cost_of_items').text(); var cost_total=$(this).closest('tr').find('.cost_total').text(); dataString += '{"row":"' + index + '", "supp_short_code":"' + supp_short_code + '", "project_ref":"' + project_ref + '", "om_part_no":"' + om_part_no + '", "description":"' + description + '", "cost_of_items":"' + cost_of_items + '", "cost_total_td":"' + cost_total + '"}'; }); dataString += ']'; $.ajax ({ type: "POST", url: "order.php", data: dataString, cache: false, success: function() { alert("Order Submitted"); } }); });
В моем файле php я пытался записать dataString в текстовый файл, чтобы я мог видеть, как он проходит через ok, но ничего не было в текстовом файле !? Я делаю что-то неправильное на стороне клиента или PHP, мой php-код:
<?php $stringData = $_POST['dataString']; $myFile = "testFile.txt"; $fh = fopen($myFile, 'w') or die("can't open file"); fwrite($fh, $stringData); fclose($fh); ?>
Почему бы вам не попытаться построить свои данные, как это
var postData = {}; $('#items tr').not(':first').each(function(index, value) { var keyPrefix = 'data[' + index + ']'; postData[keyPrefix + '[supp_short_code]'] = $(this).closest('tr').find('.supp_short_code').text(); postData[keyPrefix + '[project_ref]'] = $(this).closest('tr').find('.project_ref').text(); // and so on });
Затем в вызове AJAX
data: postData,
Теперь ваш PHP-скрипт может обрабатывать данные в виде многомерного массива
<?php if (isset($_POST['data']) && is_array($_POST['data'])) { foreach ($_POST['data'] as $row => $data) { echo $data['supp_short_code']; echo $data['project_ref']; // and so on } }
Это должно сделать это:
... $.ajax({ type: "POST", url: "order.php", data: { 'dataString': dataString }, cache: false, success: function() { alert("Order Submitted"); } });
Вы можете попытаться проверить:
<?php $stringData = $_POST['dataString']; echo $stringData; ?>
Сначала преобразуйте объект json в строку в js следующим образом:
var json_string=JSON.stringify(json_object);
Затем передайте его в PHP как строку, а затем в php расшифруйте его, например:
<?php $map = json_decode($_POST['json_string']); ?>
Надеюсь, это поможет кому-то просто найти эту тему …
Проблема заключается в том, что вы пытаетесь получить доступ к переменной POST, называемой «dataString», которая не существует. Просто потому, что вы задали свойство data для содержимого переменной «dataString», это не означает, что ваша переменная post будет называться «dataString».
Вы можете попробовать следующее:
data: { "dataString": dataString },
Это передает объект функции jQuery, которая имеет свойство «dataString» и значение вашей фактической строки данных. jQuery возьмет все свойства этого объекта (в данном случае только один) и установит их как пост-переменные в HTTP-запросе, которые он в конечном итоге отправит в ваше приложение PHP. Это позволяет вам получить доступ к данным через вызов $ _POST ["dataString"].
Стив
У меня проблемы при использовании:
url: "/folder/form.php",
И я должен использовать:
url: "folder/form.php",,