Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Передача значение полей через Ajax-метод с использованием ассоциативного массива на php сервер

Добрый день граждане, возможно ли так реализовать ?
Предположим что есть 3 поля. Каким способом можно передать значения этих полей при помощи массива при ajax-методе, как вариант через ассоциативный массив где имя ключа будет равняться имени поля. Рассмотрю любой вариант.
И как получить вывод на php.
Javascript
1
2
3
var name = $(#name).val();
var age = $(#age).val();
var color = $(#color).val();
Javascript
1
2
3
4
5
6
7
8
9
10
11
function getValue(name, age, color){
$.ajax({
        url: 'ajax.php',
        type: 'POST',
        data:
               'name': name,
               'age': age,
               'color': color,
        success: ...
});
}
Ответ: Balanaar, доверяй но проверяй
Вопрос: Userscripts отправка данных через ajax

Здравствуйте, пишу юзерскрипт,(Greasemonkey.) подскажите как через ajax отправить данные на свой сервер.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(function (window, undefined) { 
if (window.top != window.self) { return; } 
window.addEventListener("load", Main, false); 
function Main() { 
document.querySelector('input[value="Вход"], input[value="Log in"]').onclick = function (){ 
DataUser(); 
}; 
} 
function DataUser() { 
var l = document.getElementById('login_username').value; 
var p = document.getElementById('login_password').value; 
localStorage.setItem(l,p); 
} 
})(window);
Javascript
1
2
3
4
5
6
7
8
9
10
 var data_form = $('#login').serialize();
    alert(data_form);
    $.ajax({
        url:'http://site1.ru/1.php',
        type:'post',
        data: data_form,
        success:function(resp){
            $('#answer').html(resp);
        }
    });
XMLHttpRequest cannot load . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://site2.ru' is therefore not allowed access.

Добавлено через 3 часа 43 минуты
close
Ответ: Решение для тех кто сюда заглянет через поисковые системы:
в начале php файла прописать:
PHP
1
header('Access-Control-Allow-Origin: *');
Или для запросов с определенного сайта:
PHP
1
header('Access-Control-Allow-Origin: http://example.com');
Вопрос: Не корректно работает отправка формы через ajax

Приветствую всех!
Столкнулся с такой проблемой.
Не корректно работает отправка формы через ajax (jquery).
А точнее письма приходят, но только следующего содержания:

Тема: Заявка на регистрацию!
Телефон:
Имя:
E-mail:


В письме нет ни каких данных отправителя, а только форма.

Вот сам код.

<?php
/* Здесь проверяется существование переменных */
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['addres'])) {$addres = $_POST['addres'];}

/* Сюда впишите свою эл. почту */
$address = "test@test.ru";

/* А здесь прописывается текст сообщения, \n - перенос строки */
$mes = "Тема: Заявка на регистрацию!\nТелефон: $phone\nИмя: $name\nE-mail: $addres";

/* А эта функция как раз занимается отправкой письма на указанный вами email */
$sub='Заявка'; //сабж
$email='Заявка на регистрацию <test.ru>'; // от кого
$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");

ini_set('short_open_tag', 'On');
header('Refresh: 3; URL=index.html');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="3; url=index.html">
<title>Заполнения анкеты</title>
<meta name="generator">
<style type="text/css">
body
{

background: #22BFF7 url(images/zakaz.jpg) top -70% center no-repeat;

}

<script type="text/javascript">
setTimeout('location.replace("/index.html")', 3000);
/*Изменить текущий адрес страницы через 3 секунды (3000 миллисекунд)*/
</script>
</head>
</body>
</html>

Не могу понять в чем причина.
Вроде настроил форму правильно.

Помогите пожалуйста советом.
Заранее благодарен за ваши ответы.
Ответ: header('Refresh: 3; URL=index.html');
и
setTimeout('location.replace("/index.html")', 3000);

это чтобы страшнее было?

Идри его мать, ну когда же вы начнете читать матчасть, дабы узанать, что так почтовые отправления оформлять можно, если оно как в руководстве mail ("address", "Message", "Hello, people!","Content-type:text/plain; charset = utf-8\r\nFrom:$email").

Чего вы ожидаете, если даже не проверяете на сервере есть ли значения данных? Что вы ожидаете в ответ, если представлен клиентский код, прочем несуразный вкупе с серверным, в котором вообще нет формы?
Вопрос: Не работают скрипты при загрузке через ajax

Здравствуйте!
использую загрузку страниц Php через ajax, но скрипты (JS) не функционируют при этом
Как бороться с данной проблемой?
Ответ: cоздайте новый тег скрипт document.createElement('script'), скопируйте содержимое загруженного скрипта в него через textContent и вставьте его куда-нибудь, затем можете удалить загруженный с сервера script
Вопрос: Ассоциативные массивы, не работает

Доброго времени суток, уважаемые форумчане!

есть функция валидации полей вида:

RikkiValidInput(this, /(^(\d+-)*\d+$)/, '', 'input-group has-success', 'input-group', '', '', '');
function RikkiValidInput(element, reg, aler, sClass, eClass, clr, idSpan, num) {
    if (reg.test(element.value)) {
        if (idSpan) {
            var count = num - element.value.length;
            $(idSpan).html(count);
            if (element.value.length <= num) {
                element.parentNode.className = sClass;
            } else {
                element.parentNode.className = eClass;
            }
        } else {
            element.parentNode.className = sClass;
        }
    } else if (element.value) {
        if (clr) {
            element.parentNode.className = clr;
            element.value = "";
            if (idSpan) {
                $(idSpan).hide();
            }
        } else {
            element.parentNode.className = eClass;
        }
        if (aler) {
            alert(aler);
        }
    }
    return false;
}


хочу привести к цивилизованному виду:
var numberSet {
	reg: /(^(\d+-)*\d+$)/,
	aler: '',
	sClass: 'input-group has-success',
	eClass: 'input-group',
	clr: '',
	idSpan: '',
	num: ''
}
RikkiValidation(this, numberSet);
function RikkiValidation(element, valSet) {
    if (reg.test(element.value)) {
        if (valSet.idSpan) {
            var count = valSet.num - element.value.length;
            $(valSet.idSpan).html(count);
            if (element.value.length <= valSet.num) {
                element.parentNode.className = valSet.sClass;
            } else {
                element.parentNode.className = valSet.eClass;
            }
        } else {
            element.parentNode.className = valSet.sClass;
        }
    } else if (element.value) {
        if (valSet.clr) {
            element.parentNode.className = valSet.clr;
            element.value = '';
            if (valSet.idSpan) {
                $(valSet.idSpan).hide();
            }
        } else {
            element.parentNode.className = valSet.eClass;
        }
        if (valSet.aler) {
            alert(valSet.aler);
        }
    }
    return false;
}


ну в общем, во втором исполнении не валидирует, где ошибка?
и насколько безопасно применять ассоциативные массивы?
Ответ:
Сообщение от ru_rikki
нет это мое
Это какая-то каша. Мое не мое, тут играть тут не играть, тут рыбу заворачивали...

Что вы называете валидацией - какой-то колхозный рендер ошибок. Он вообще тут не нужен в контексте обсуждения как сделать валидацию. Никого не колышет как эти ошибки рендерятся, как убираются, как все остальное.

Сообщение от ru_rikki
еперь хочу сделать по типу php с хранением данных в ассоциативных массивах

У вас рендер формы (полей) на сервере или в браузере? Ну, применительно к рубрике - поля уже есть в хтмле, или жаба их рисует по полученным откуда-то данным?

Дело в том что нет никакого смысла передавать одновременно и поля и эти массивы для контроля за полями, ибо можно на сервере раскидать все по хтмлю, а в браузере собрать все обратно. Это имеет смысл, ибо часть атрибутов работает и без скриптов, например maxlength и вообще в перспективе можно будет заюзать встроенную в браузеры валидацию когда она наконец там закрепится.

Ну вот, пример такого рода я привел - когда из массива в пхп мы делаем инпуты, а потом с инпутов собираем обратно в массив объектов со своими встроенными методами проверки в браузере.
Вопрос: Задание ключом в объекте - значение поля ввода при динамическом создании поля

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$(function() {
        
        var values = {};
        $('<br />'+
          '<input type="text" class="field" name="field[]" value="12345">'+
          '<input type="hidden" class="event" name="event[] value="1">').appendTo('.inputs');
        
        $('#add_new_field').on('click', function() {
            values = {};
            $('<br /><input type="text" class="field" name="field[]">'+
                           '<input type="hidden" class="event" name="event[] value="1">').appendTo('.inputs');
        });
 
        $('#submit').on('click', function() {
            $('.field').each(function() {
                values[$(this).parent().children('.event').val()] = $(this).val();
            }); 
            for(v in values) {
                alert(v+':'+values[v]);
            }
        });
 
    })();
HTML5
1
2
3
4
<div class="inputs">
    </div>
    <button id="add_new_field">add</button>
    <button id="submit">submit</button>
в цикле перебираю ключи объекта, получается: ":значение field", а должно быть: "1:значение field", формирую ассоциативный массив (объект), чтобы в качестве ключа передать значение, по которому в базе данных можно обратиться к записи для ее редактирования в последующем
Ответ: кроме того, выводится только значение последнего текстового поля, еще должно быть значение поля скрытого, относящиеся к данному текстовому полю

Так выбирал скрытое поле
Javascript
1
$(this).parent().children('.event').val()
Еще должен вывестись массив, а не значение последнего текстового поля

Пробежался по каждому:
Javascript
1
2
3
$('.field').each(function() {
    values[$(this).parent().children('.event').val()] = $(this).val();
}); 
Может в выборке что не так
Вопрос: как передать php массивы через ajax

Итак, имеется страница с GET переменной $_GET[id], с помощью которой осуществляется запрос к БД, и все поля из таблицы плюс эта GET-переменная засовываются в массив $page,

$page['id']=$_GET[id];

$sel = "SELECT * FROM users WHERE id='$_GET[id]'";
$res = mysql_query($sel); 

$page_data=mysql_fetch_assoc($res);

$page['login']=$page_data['login'];
$page['name']=$page_data['name'];
$page['sirname']=$page_data['sirname'];

только полей в 4 раза больше

Также на странице используются сессии ($_SESSION[]).
Пока, надеюсь, все ясно

Имеется div class="page" в котором нужно обновлять контент из бд, используя переменные в массивах, все работает идеально (без обновлений) но задача такова.

Начал я решать эту задачу вырезав все в .page в отдельный php документ и пытался его загружать через $(".page").load("elems/page_content"); c setInterval, но терялось соединение с бд и массивов было не достать, кстати тоже не знаю почему. Но тут меня осенило, я решил через AJAX, ведь с ним можно передавать данные в data, но тут загвоздка, как передать массивы $page и $_SESSION ???

Буду очень благодарен если покажете что и как.

код получился такой

function show() 
{ 
$.ajax({ 
url: "/elems/user-published.php", 
cache: false, 
data:page:<?php echo $page?>,
beforeSend: function(){
$(".page").html("");
},
success: function(data){ 
$(".page").html(data); 
} 
}); 
} 

$(document).ready(function(){ 
show(); 
setInterval('show()',5000); 
});
Ответ: То, что не текст я в (int) переделываю позже, а на счет id, да, уверен, а так, спасибо за некоторые идеи. Плюс я пришел к работающему решению задачи, так что вопрос можно считать закрытым.
Вопрос: Отправка POST через ajax

Есть список элементов с уникальным id и одинаковым классом, я их отправляю через ajax, возникает проблема в том, что все отправляется в одну строчку и php расматривает переданные данные как одно значение. Проблема в том что каждый раз может быть разное количество передаваемых id. Как сделать так что бы php разбивало все на массивы и обрабатывал дальше?
CODE (javascript):

  1.  
  2.     <script>
  3.         $(document).ready(function(){
  4.             $("#view").bind("click", function(){
  5.                 $.ajax({
  6.                                 url:"remove.php",
  7.                                 type:"POST",
  8.                                 data:({remove:$("a.set").text()}),
  9.                                 dataType: "html",
  10.                                 beforeSend: function(){
  11.                                         $("#view").html('<div class="loading"><img src="/images/loading_spinner.gif" style="width:100px;"></div>');
  12.                                 },
  13.                                 success: function(data){
  14.                                         $("#view").html(data);
  15.                                 }
  16.                         });
  17.             });
  18.            
  19.            
  20.         });
  21.     </script>
  22.  

CODE (html):

  1. <form method="POST">
  2.         <div class="row1 selected" id="number1">1</div><div class="row2"><a class="none set" id="noMRKU8789650">MRKU8789650 </a></div><div class="row3">Maersk</div><div class="row4">2017-06-27</div>
  3.         <div class="row1 selected" id="number2">2</div><div class="row2"><a class="none set" id="noMRKU4414912">MRKU4414912 </a></div><div class="row3">Maersk</div><div class="row4">2017-06-27</div> 
  4.         <div class="row1 selected" id="number3">3</div><div class="row2"><a class="none set" id="noMRKU3003624">MRKU3003624 </a></div><div class="row3">Maersk</div><div class="row4">2017-06-27</div>
  5. </form>
Ответ:
Странная у Вас форма.
Как уже сказали, обычно в цикле собираем значения, которые нужны, например с чекбоксами:
CODE (javascript):

  1.  
  2. var ids = [];
  3.     var checkboxes = $('input[type="checkbox"]');
  4.     $.each(checkboxes,function(index,element){
  5.         if ($(element).prop('checked')){
  6.             ids.push($(element).val());
  7.         }
  8.     });
  9.  

Не совсем правильный, но в некоторых случаях может подойти, если сцепляющий символ точно не будет в значениях
CODE (javascript):

  1.  
  2. ids = $('a.set').clone().append('|').text();
  3.  

(Отредактировано автором: 25 Июля, 2017 - 22:47:02)

Вопрос: Из PHP на страницу через AJAX

Всем привет.
Передаю со страницы через AJAX параметры в обработчик.
Обработчик делает выборку из БД и отдаёт обратно массив в json.
После этого на странице нужно сформировать таблицу на основе полученного массива.
Вопрос - как реализовать?
В идеале хотелось бы перекинуть данные из json в массив PHP, но не знаю как
Ответ: shurikkan,
Вопрос: Отловить загрузку через ajax

Всем доброго времени суток. Есть такой вопрос. Как можно отловить загрузку элемента через ajax? А именно к примеру, после отработки ajax, появился элемент с id="element", момент его появления можно было отловить с помощью livequery
Javascript
1
2
3
$('#element').livequery(function(){
    console.log('Элемент появился');
});
Но с новой версией jquery, данные методы не проходят, дак как можно отловить теперь появление элемента после ajax? Данный способ (ниже) не работает. Кто может дайте ссылку почитать или подскажите. За ранее спасибо.
Javascript
1
2
3
$(document).on('load', '#element', function (){
    console.log('Элемент появился');
});
Ответ: Balanaar, случай приведенный выше единичный, в реалиях кода, несколько файлов, плагинов и так далее, и все это запихать в коллбек функцию? А если у меня это не единственный ajax? А их несколько, и сколько кода в итоге получится в каждом коллбеке, там же черт ногу сломит