Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.04.2015, 14:56
Аспирант
Отправить личное сообщение для Влад_имир Посмотреть профиль Найти все сообщения от Влад_имир
 
Регистрация: 03.03.2015
Сообщений: 44

$data= json_encode ($otvet); не приходит на клиент.
Ответить с цитированием
  #12 (permalink)  
Старый 06.04.2015, 15:02
Аспирант
Отправить личное сообщение для Влад_имир Посмотреть профиль Найти все сообщения от Влад_имир
 
Регистрация: 03.03.2015
Сообщений: 44

Сообщение от laimas Посмотреть сообщение
Если json_encode([9176, 1234, 10]), то на клиенте тип ожидаемых данных должен быть указан как json, а в success: function (data) будет достаточно обычного цикла, например:
while(v = data.pop()) {
    alert(v)
}
У меня json_encode на скриншоте показан. А как его к такому виду подогнать ([9176, 1234, 10]) ?
Ответить с цитированием
  #13 (permalink)  
Старый 06.04.2015, 15:10
Аспирант
Отправить личное сообщение для Влад_имир Посмотреть профиль Найти все сообщения от Влад_имир
 
Регистрация: 03.03.2015
Сообщений: 44

json_encode не работает или работает но не так
Ответить с цитированием
  #14 (permalink)  
Старый 06.04.2015, 15:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

На изображении вашем, это не JSON, а результат работы hrint_r(array), а вот json_encode() этого массива будет выглядеть именно как [9176,1234,10].
Привести к виду json_encode([9176, 1234, 10])...
Это не приведение к виду, а объявление массива в аргументе функции json_encode(), причем такое объявление возможно только в версии РНР не ниже 5.4, в младших необходимо объявлять массив как array(9176, 1234, 10).
Вам же этого не требуется вообще, это я в пояснении так написал, у вас массив для ответа клиенту это $otvet, хотя уж лучше отучать себя от такого "жаргона".

Вы не показываете кода сервера, код клиента только частично, не описываете проблему, значит и ответить затруднительно.
Ответить с цитированием
  #15 (permalink)  
Старый 06.04.2015, 15:40
Аспирант
Отправить личное сообщение для Влад_имир Посмотреть профиль Найти все сообщения от Влад_имир
 
Регистрация: 03.03.2015
Сообщений: 44

серверная часть
<? 
require 'function.php';
header("Content-type: text/plain; charset=utf-8");
$errors = array(); 
$otvet=array(); 

if (isset($_POST['int'])) {$str = $_POST['int'];}
if (isset($_POST['hidden'])) 
	{
			if(true==empty($_POST['hidden']))
			{
			/* echo 'Перепенная пустая!';		 */
			$a=str_split(gen());
			$string = implode("", $a);
			$otvet[]= $string;
			}
			else
			{
				/* echo ' не пустая!'; */
				/* var_dump (isset($_POST['hidden'])); */
				$iskomoe_chislo = $_POST['hidden'];
				/* print_r ($iskomoe_chislo); */
				$otvet[]=$iskomoe_chislo;
			}
	}
	


$arr1 = str_split($str);
$result = array_unique($arr1);

if (isset($arr1)) {
	$length_arr1=count ($arr1);
   
}
if (isset($result)) {
	$length_result=count ($result);
  
}


if ($length_result<$length_arr1)
{
	$errors[] ="Нельзя вводить повторяющиеся цифры!!";
	
}

 if(isset($errors[0])){
   echo $errors[0];
   return false;
 } 
						 	
				
						
						$otvet[]= $str;
						$otvet[]=buki($a,$arr1);
						print_r ($otvet);
										
						$data= json_encode ($otvet);
						
?>

клиентская
$(document).ready(function(){
		jQuery.validator.addMethod(
    'regexp',
    function(value, element, regexp) {
        var re = new RegExp(regexp);
        return this.optional(element) || re.test(value);
    },
    ""
);
	
	$("#formdata").validate({
	
	
   	rules: {
            int: {
                required: true,
                minlength: 4,
                maxlength: 4,
				number : true,
				regexp: '^[1-9]{1}[0-9]*$'
            }

        },
        messages:{
            int:{
                required: "поле не заполнено или заполнено не верно",
                minlength: "в поле должно быть минимум 4 символа",
                maxlength: "В поле должно быть максимум 4 символа",
				number : "В поле должны быть только цифры",
				regexp: "Число не должно начинаться на ноль!!"
			    
            }
        },
     
	
	  submitHandler: function() { //это обработчик нажатия кнопки ОТПРАВИТЬ
      
        var data = $("#formdata").serialize();
		
        $.ajax({// инициализируем ajax запрос
            type: 'POST', // отправляем в POST формате
            url: '../obrabot.php', // путь до обработчика, у нас он лежит в той же папке
			data: data, // данные для отправки
			/* cache: false, */
			success: function (data)
			{ 
					if (data )
						{
						alert("Пришли данные " + data);
								if (data=='Нельзя вводить повторяющиеся цифры!!')
								{
								$('#error').html(data).fadeIn(200);
								$('#formdata')[0].reset();
								$('#error').html(data).fadeOut(2000);
								
								}	
								else
								{
																
								alert (data.length);
								$('input[type="hidden"]').val(data);	
								$("#p1").text(data[2]);
								data.length=0;
								
								}
						}
					else
						{
								alert("no ok");			
						}
								
			}  	
           
			
        });
		return false;
	}
	
});
});
Ответить с цитированием
  #16 (permalink)  
Старый 06.04.2015, 15:42
Аспирант
Отправить личное сообщение для Влад_имир Посмотреть профиль Найти все сообщения от Влад_имир
 
Регистрация: 03.03.2015
Сообщений: 44

data.length=0;
пытался обнулить массив ,чтобы не происходило накопление массивов, но не работает

Последний раз редактировалось Влад_имир, 06.04.2015 в 15:54.
Ответить с цитированием
  #17 (permalink)  
Старый 06.04.2015, 15:49
Аспирант
Отправить личное сообщение для Влад_имир Посмотреть профиль Найти все сообщения от Влад_имир
 
Регистрация: 03.03.2015
Сообщений: 44

data приходит как на скриншоте
Ответить с цитированием
  #18 (permalink)  
Старый 06.04.2015, 15:51
Аспирант
Отправить личное сообщение для Влад_имир Посмотреть профиль Найти все сообщения от Влад_имир
 
Регистрация: 03.03.2015
Сообщений: 44

а еще 2 функции в обработчике gen, buki вынесены в другой файл
Ответить с цитированием
  #19 (permalink)  
Старый 06.04.2015, 16:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Вспомнил, вы уже писал подобный пост. Если вы работаете только с числами и их значения должны быть нулевыми, то POST принимать надо с приведения его значений к iteger:
$_POST = array_map('intval', $_POST)

А далее проверка без всяких if(true==empty($_POST['hidden'])) и дальнейших if (isset($arr1))...

Работая с JSON, укажите методу .ajax тип данных dataType : "json"
Но в этом случае РНР сценарий должен возвращать именно этот формат, а не смесь, к примеру:

echo $errors[0] - а зачем тогда Error массив, если возвращается только первый его элемент при ошибке?
А если возвращается массив ошибок, то почему не в json формате?

return false - это из чего возврат, если это не функция и не цикл?
Ответить с цитированием
  #20 (permalink)  
Старый 06.04.2015, 16:09
Аспирант
Отправить личное сообщение для Влад_имир Посмотреть профиль Найти все сообщения от Влад_имир
 
Регистрация: 03.03.2015
Сообщений: 44

dataType : "json" , я же отправляю не в json формате.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вытащить данные из Flash flyte Javascript под браузер 0 08.10.2014 18:38
Вытащить данные в алерт maximus2011 jQuery 5 22.08.2014 16:15
Удалить данные с массива jeka123 Javascript под браузер 7 09.04.2014 16:42
Как достать данные из JSON массива? Dimaz jQuery 15 27.11.2012 21:58
Помогите вытащить из таблицы данные... MD6 Общие вопросы Javascript 1 07.10.2008 13:03