Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   разбор приходящих данных после post запроса (https://javascript.ru/forum/jquery/11491-razbor-prikhodyashhikh-dannykh-posle-post-zaprosa.html)

FRIE 26.08.2010 14:05

разбор приходящих данных после post запроса
 
вделаю такой запрос
$.post('index.php?action=cp&newcpadd=true', str, function(data) {
 alert(data); 
  });


нужно из полученного html выдернуть значение из дива #dannie

пробовал в php запихнуть json и тут распарсить
$.post('index.php?action=cp&newcpadd=true', str, function(data) {
 alert(data.cpid);
  },"json");

но если добавляю в конце ,"json" то полсе запроса он чето ничего не делает((( даже если перед alert(data.cpid); я поставлю alert('ok'); то он мне ok не выводит.

как разобрать "data" чтобы получить значение из дива dannie?
или че я делаю не так когда делаю с json?

sysya 26.08.2010 15:34

может так надо
var d = data.find('#dannie');
Что такое cpid?

FRIE 26.08.2010 15:46

Цитата:

Сообщение от sysya (Сообщение 68750)
может так надо
var d = data.find('#dannie');
Что такое cpid?

nfr пробовал =)) пишет data.find is not a function


cpid это {cpid:123} типо json

sysya 26.08.2010 16:13

var d = data.find('#dannie');
Если вы принимаете html

для json:
var json = eval("(" + data + ")");

FRIE 26.08.2010 17:17

это я понимаю, протсо вы меня не так поняли


если я делаю так

$.post('index.php?action=cpchangerange&changerange=true&newcpadd=true', str, function(data) {
var json = eval("(" + data + ")");
alert(json.cpid);
  },"json");


то никакого алерта я не получаю

я подумал может сделать вот так

$.post('index.php?action=cp&newcpadd=true', str, function(data) {
вот тут разобрать data и получить значение дива #dannie
  });


мне подойдет любой вариант, почему с json не работает я не понимаю, раньше я так делал и работало, но меня и устроил бы второй вариант но как его сделать хз

sysya 26.08.2010 20:08

ответ скрипта такой {cpid:123} а если сделать так {"cpid":"123"}

FRIE 27.08.2010 10:33

прошу прощения просто кавычки забыл написать

а ответ от сервера такой:

<div id='dannie'>
{"cpid":"160"}
</div>

FRIE 27.08.2010 10:34

текст js такой

var str = $('#formzakaz').serialize();
  $.post('index.php?action=cpchangerange&changerange=true&newcpadd=true', str, function(data) {
var json = eval("(" + data + ")");
alert(json.cpid);
  },"json");

sysya 27.08.2010 10:46

Это попытка комбинировать ответ серва :D
<div id='dannie'>
{"cpid":"160"}
</div>
Выберите что то одно либо html либо json

Под такой js, такой ответ: {"cpid":"160"}

FRIE 27.08.2010 11:48

нужно чтобы в ответе было только {"cpid":"160"} ?

inGray 27.08.2010 12:11

FRIE,
Да

FRIE 27.08.2010 15:54

а у меня в ответе html в котором прописаны заголовки js скрипты боди итп.. как мне сделать чтобы он отдал читсый json или получил чисты json?

я пробовал так

var str = $('#formzakaz').serialize();
  $.post('index.php?action=cpchangerange&changerange=true&newcpadd=true #dannie', str, function(data) {
var json = eval("(" + data + ")");
alert(json.cpid);
  },"json");


чтобы он взял токо содержимое дива #dannie но он всеравно отдает полный хтмл (((

inGray 27.08.2010 16:00

index.php - не ваша страница? Чья-то чужая?

FRIE 27.08.2010 17:54

моя конечно ) просто непонимаю чето я как это сделать..

sysya 27.08.2010 18:02

Ну скриптом php сформируйте нужный json-код и все, а яваскрипт приняв данные воссоздаст теги уже на стороне клиента.

Скрипт php покажте уже на форуме php, может там что посоветуют

FRIE 27.08.2010 18:13

у меня 1 индексный файл через который подключаются остальные, поэтому от мусора избавиться будет муторно, может тогда попробовать вариант чтобы получить содержимое дива dannie? но как это сделать?

sysya 28.08.2010 08:17

Слишком много спрашиваете и ничего не делаете.
Пробуйте делать
$.post('index.php?action=cpchangerange&changerange=true&newcpadd=true #dannie', str, function(data) {
 var d = data.find('#dannie').text();
alert(d);
  },"html");
или платите...

FRIE 31.08.2010 10:37

пробовал так, пишет data.find is not a function

sysya 31.08.2010 12:51

а так
$(data).find('#dannie').text();
или так
$(data).text();

FRIE 14.09.2010 12:11

Цитата:

Сообщение от sysya (Сообщение 69268)
а так
$(data).find('#dannie').text();
или так
$(data).text();

$(data).find('#dannie').text();


выводит пустой алерт, хотя в ответе в фаербаге я вижу текст в диве #dannie

а
$(data).text();

выводит то что пришло в ответе ,вместе со скриптами

FRIE 14.09.2010 14:08

проблема решилась так :
я завернул json в div class='jsondata'
и потом разобрал строку

var str = $(data).find('.jsondata').text();
	json = eval("(" + str + ")");


Часовой пояс GMT +3, время: 04:26.