| 
	| 
	
	| 
		
	| 
			
			 
			
				29.12.2017, 18:07
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 20.11.2017 
						Сообщений: 72
					 
		
 |  |  
	| 
				Unexpected end of JSON input
			 Здравствуйте, я пытаюсь получить данные с бд с помощью ajax. 
Вот jquery:
 
$(function(){
   
    $("#docslistp").one("click",function(){
            $('#ajaxsuccessdoc').find('.doctext1').each(function(i, elem) {
               
                
                $( '#ajaxsuccessdoc' ).on('click','#updlistd'.concat(i),function() {
                    var ldocname=$('#ldocname'.concat(i)).text();
                    var ldocdesc=$('#ldocdesc'.concat(i)).text();
                    var id=i+1;
                    $.ajax({
                        type:"POST",
                        url: "UPDDOCLIST.php",
                        data:{  ldocname:ldocname,
                                ldocdesc:ldocdesc,
                                id:id},
                        success:function(data){
 
                            var newData = jQuery.parseJSON(data);
                            $('#namel'.concat(i)).val(newData.name);
                            $('#descl'.concat(i)).val(newData.desc);
                            
                        }
                    });
 
                  $( "#flist".concat(i) ).toggle( "slow", function() {
                    
                });
            });
        });
        });
   
    });
Вот UPDDOCLIST.php
 
<?php
require_once '../connection.php';
 
if (isset($_POST['ldocname'])&& !empty($_POST['ldocname']) && isset($_POST['ldocdesc'])&& !empty($_POST['ldocdesc'])&& isset($_POST['id'])&& !empty($_POST['id'])){
 
    $Name=strval($_POST['ldocname']);
    $Desc=strval($_POST['ldocdesc']);
    $ID=intval($_POST['id']);
    /* echo $Name; */
 
    $query =$db->query("SELECT * FROM `docarcitem` WHERE `String2`='$Name' AND `String7`='$Desc' AND `ID`=$ID");
 
    while ($row = $query->fetch()) {
        $array = array(
            
            'name'=>$row->String2,
            'desc'=>$row->String7
 
        );
        echo json_encode($array);
 
 
    }
 
}else{
    echo "Параметры не переданы";
}
?>
Скрипт выполняется, но ничего не возвращает. Также в консоли я получаю ошибку "Unexpected end of JSON input". Ошибка указывает на строку:var newData = jQuery.parseJSON(data);
 
Как я могу это исправить?
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				29.12.2017, 18:44
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от mazahaler |  
	| `String2`='$Name' AND `String7`='$Desc' AND `ID`=$ID" |  
	
 Так нельзя делать, это опасно! 
А ошибка в том, что сервер отдает не JSON, а "кучи json строк". Сперва нужно получить данные запроса, которые в JSON  и отдавать. |  |  
	| 
		
	| 
			
			 
			
				29.12.2017, 19:12
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 20.11.2017 
						Сообщений: 72
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas   |  
	| Сперва нужно получить данные запроса, которые в JSON  и отдавать. |  
	
 Спасибо, можете пожалуйста написать пример? |  |  
	| 
		
	| 
			
			 
			
				29.12.2017, 21:23
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Вместо строк 13 - 23 получайте сразу весь набор как $query->fetchAll(), который и отдавайте как JSON. 
exit(json_encode($query->fetchAll()));
 
Если предполагается диалог либо JSON, либо текст, то каким образом клиент поймет что ему пришло, если ему не сообщаться это? Либо передавайте заголовки сообщающие тип данных и разбирайтесь. Либо всегда отдавайте json и заголовок для него, в этом случае на клиенте при получении массива будет объект, а при получении "Параметры не переданы", будет строка. 
 
Данные полученные извне подставлять в запрос не фильтруя ни в коем случае нельзя! Либо сами обрабатывайте их, либо используйте подготовленные запросы драйвера SQL. |  |  
	| 
		
	| 
			
			 
			
				29.12.2017, 21:46
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 20.11.2017 
						Сообщений: 72
					 
		
 |  |  
	| laimas,Спасибо!
 |  |  
	| 
		
	| 
			
			 
			
				30.12.2017, 00:05
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 20.11.2017 
						Сообщений: 72
					 
		
 |  |  
	| laimas, 
 еще вопрос. Вот допустим в переменной я получил массив вида: 
[{"ID":"8","MainID_Ref":"3510","ParentType":"60","ObjectType":"117","String1":null,"String2":"222","String3":null,"String4":null,"String5":null,"String6":null,"String7":"222","String8":null,"String9":null,"String10":null,"LongInt1":null,"Double1":null,"Double2":null,"Memo1":null,"Memo2":null}]
Как теперь можно обратится к конкретному элементу? Например я хочу вывести только String2 |  |  
	| 
		
	| 
			
			 
			
				30.12.2017, 00:14
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| mazahaler,
  
var data = [{
    "ID": "8",
    "MainID_Ref": "3510",
    "ParentType": "60",
    "ObjectType": "117",
    "String1": null,
    "String2": "222",
    "String3": null,
    "String4": null,
    "String5": null,
    "String6": null,
    "String7": "222",
    "String8": null,
    "String9": null,
    "String10": null,
    "LongInt1": null,
    "Double1": null,
    "Double2": null,
    "Memo1": null,
    "Memo2": null
}]
alert(data[0].String2);
 |  |  
	| 
		
	| 
			
			 
			
				30.12.2017, 00:30
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 20.11.2017 
						Сообщений: 72
					 
		
 |  |  
	| рони,Большое спасибо!
 |  |  
	| 
		
	| 
			
			 
			
				30.12.2017, 08:07
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| mazahaler, 
судя по объекту, вы запрашиваете одну запись из БД, а значит ни каких ни while, ни fetchAll, а так:
 
exit(json_encode($query->fetch()));
 
и клиент получит не массив объектов, а объект, получить в котором свойство так:
 
data.String2
 |  |  |  |