У меня есть некоторые значения сеанса, которые я постоянно меняю посредством вызовов Ajax. Кажется, я не могу обработать данные POST, чтобы обработать его и установить значения.Чтение данных POST в вызове AJAX
То, что я передаю ему, представляет собой массив строк, как показано в моем коде ниже.
Вот где AJAX звонки:
var sessionValues = [];
str = {"PID": "1", "Level": "Main", "MenuName": "Kitchen", "State": "CHECKED"}
sessionValues.push(str);
var postObj = {"sessionData": sessionValues};
$.ajax({
type: 'POST',
data: {'data': postObj},
url: 'setSession.asp'
}).done(function(response){
console.log(response);
})
я это прекрасно работать в PHP версии программы, но моя ASP версия не захватывая данные. Вот мой PHP ver и ASP ver, насколько я мог его преобразовать.
<-- php setSession.php works fine -->
$data = $_POST['data'];
foreach ($data['sessionData'] as $key => $value) {
$projectProduct = "1";
$level = $value["Level"];
$menuName = $value["MenuName"];
$state = $value["State"];
$_SESSION['PID:'.$projectProduct][$level][$menuName]['menu_state'] = $state;
echo "[PID:".$projectProduct."][".$level."][".$menuName."][".$state."]<br>";
}
0 =>>>>> Array<br>[PID:1][Main][Kitchen][CHECKED]
Здесь я хочу сделать то же самое в ASP
' setSession.asp
data = Request.Form("data")
For Each part In data("sessionData")
projectProduct = part("PID")
level = part("Level")
menuName = part("MenuName")
state = part("State")
Session("PID:" & projectProduct).Item(level).Item(menuName).Remove("menu_state")
Session("PID:" & projectProduct).Item(level).Item(menuName).Add "menu_state", state
response.write("[PID:" & projectProduct&"]["&level&"]["&menuName&"]["&state&"]<br>")
Next
выводит пустой
Похоже, он никогда не имеет каких-либо данных, но не бросать какие-либо ошибки. Я правильно читаю объект POST?
[править]
Вот данные RAW POST захваченный из Скрипач:
data%5BsessionData%5D%5B0%5D%5BPID%5D=1&data%5BsessionData%5D%5B0%5D%5BLevel%5D=Main&data%5BsessionData%5D%5B0%5D%5BMenuName%5D=Kitchen&data%5BsessionData%5D%5B0%5D%5BState%5D=CHECKED
здесь я использовал URL Decode на этом string-
data[sessionData][0][PID]=1&data[sessionData][0][Level]=Main Level Plan&data[sessionData][0][MenuName]=Kitchen&data[sessionData][0][State]=CHECKED
Это выглядит как я должен теперь можно провести петлю через строки, используя
For Each part In Request.Form("data[sessionData]")
, но ничего не происходит. Я добавил простой цикл, чтобы посмотреть на Request.Form и вот что он видит:
for each x in Request.Form
Response.Write(x)
Next
' outputs -> data[sessionData][0][PID]data[sessionData][0][Level]data[sessionData][0][MenuName]data[sessionData][0][State]
Я предполагаю, что это сводится к просто прочитывая и обработка этой строки правильно, или несколько, если более чем один отправлено. Верный?
Это помогло бы, если бы мы могли видеть RAW HTTP POST отправляется на страницу ASP, вы можете захватить с помощью Fiddler? – Lankymart
Это все, что посылает Fiddler - BYPES BYPES (by Content-Type) -------------- ~ headers ~: 252 текст/html: 20 – user1601513
и это первые строки от Скрипач - Request Count: 1 Bytes Sent: 1446 \t \t (заголовки: 1240, тело: 206) Bytes Received: 272 \t \t (заголовки: 252, тело: 20) – user1601513