Почему не работает ajax
Перейти к содержимому

Почему не работает ajax

  • автор:

Почему не работает ajax

Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2011

Помог: 0 раз(а)

Проблема в том, что после отправки запроса ajax, вместо нужного результата (на локалке как раз выводится как надо), php скрипт возвращает HTML код страницы во всех запросах ajax, в чем проблема может быть?

Отправлено: 30 Ноября, 2012 — 12:06:18

Покинул форум
Сообщений всего: 4527
Дата рег-ции: Февр. 2011
Откуда: Москва

Помог: 221 раз(а)

Покажите js код запроса и файл .htaccess.
Отправлено: 30 Ноября, 2012 — 12:07:56

Покинул форум
Сообщений всего: 6001
Дата рег-ции: Сент. 2011
Откуда: Харьков

Помог: 126 раз(а)

Цитата:
вместо нужного результата

а нужный результат это какой?
Отправлено: 30 Ноября, 2012 — 12:08:14

Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2011

Помог: 0 раз(а)

armancho7777777 пишет:
Покажите js код запроса и файл .htaccess.
CODE (text):
скопировать код в буфер обмена
RewriteEngine On
RewriteCond % !-f
RewriteCond % !-d
# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php/$1 [PT,L]
ErrorDocument 404 /index.php
CODE (javascript):
скопировать код в буфер обмена
url : «process/indexProcess» ,
dataType : ‘json’ ,
type : ‘POST’ ,
data : { x : xy. x , y : xy. y , value : mind } ,
success : function ( data )

(Добавление)
caballero пишет:
Цитата:
вместо нужного результата

а нужный результат это какой?

массив json объектов, или null, но не HTML же код страницы, которая запрашивает

Отредактировано модератором: armancho7777777, 30 Ноября, 2012 — 12:15:49
Просьба форматировать код.

Отправлено: 30 Ноября, 2012 — 12:11:11

Покинул форум
Сообщений всего: 4527
Дата рег-ции: Февр. 2011
Откуда: Москва

Помог: 221 раз(а)

Надо указывать абсолютный путь:
«/process/indexProcess»
Отправлено: 30 Ноября, 2012 — 12:15:55

Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2011

Помог: 0 раз(а)

armancho7777777 пишет:
Надо указывать абсолютный путь:
«/process/indexProcess»

ничего не поменялось, как возвращало ajx html код так и возвращает

Отправлено: 30 Ноября, 2012 — 12:19:14

Покинул форум
Сообщений всего: 4527
Дата рег-ции: Февр. 2011
Откуда: Москва

Помог: 221 раз(а)

У Вас этот адрес-то существует: http://your-site.ru/process/indexProcess ?
Вставьте в адресную строку и запустите.
Что выводит?

Отправлено: 30 Ноября, 2012 — 12:24:06

Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2011

Помог: 0 раз(а)

armancho7777777 пишет:

У Вас этот адрес-то существует: http://your-site.ru/process/indexProcess ?
Вставьте в адресную строку и запустите.
Что выводит?

исправил, добавил .php к indexProcess, но теперь рабочий прокси мне выдает 407 Proxy Authentication Required
189ms
(Добавление)

m2broth пишет:
armancho7777777 пишет:

У Вас этот адрес-то существует: http://your-site.ru/process/indexProcess ?
Вставьте в адресную строку и запустите.
Что выводит?

исправил, добавил .php к indexProcess, но теперь рабочий прокси мне выдает 407 Proxy Authentication Required
189ms

а изначально 500 Internal Server Error
194ms такая

Отправлено: 30 Ноября, 2012 — 12:29:53

Покинул форум
Сообщений всего: 4527
Дата рег-ции: Февр. 2011
Откуда: Москва

Помог: 221 раз(а)

armancho7777777 пишет:

У Вас этот адрес-то существует: http://your-site[dot]ru/process/indexProcess ?
Вставьте в адресную строку и запустите.
Что выводит?

Отправлено: 30 Ноября, 2012 — 12:31:08

Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2011

Помог: 0 раз(а)

armancho7777777 пишет:
armancho7777777 пишет:

У Вас этот адрес-то существует: http://your-site[dot]ru/process/indexProcess ?
Вставьте в адресную строку и запустите.
Что выводит?

адреса indexProcess не существовало, а добавил «.php», теперь появляется ошибка Internal Server Error

Отправлено: 30 Ноября, 2012 — 12:33:35

Покинул форум
Сообщений всего: 6001
Дата рег-ции: Сент. 2011
Откуда: Харьков

Помог: 126 раз(а)

.htaccess кривой
Отправлено: 30 Ноября, 2012 — 12:34:08

Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2011

Помог: 0 раз(а)

Почему не работает ajax?

Пишу код на локальном сервере (Open Server) по примеру из видео. Но он почему-то не работает. Вот HTML и JavaScript:

window.onload = function() < document.querySelector('#shop_ip').onclick = function() < ajaxGet(); >> function ajaxGet()
     AJAX  

У человека из видео точно такой же код и при этом у него после клика в консоли браузера выводится следующее: введите сюда описание изображения У меня же ничего не выводится: введите сюда описание изображения Вот как файлы расположены, если это важно: введите сюда описание изображения У меня есть некие подозрения что это видео не новое так сказать и в браузерах что то изменилось. Что теперь это выводится в другом месте, но это лишь мои мысли хочу узнать так ли это? Вот «полазив» во вкладке network в хроме увидел следующее: введите сюда описание изображения Кто знает, подскажите пожалуйста. В чём дело? Буду рад любой помощи. Спасибо! Ах, да вот что на странице где php код. Этим я хочу показать что php работает. С ним тоже вроде всё норм. введите сюда описание изображения

Почему не работает Ajax запрос?

63edc71a93253963219076.png

в данный момент я потихоньку учусь писать backend (python fastapi) и frontend (html + js) и у меня возникли трудности. В документации по api, которая генерируется автоматически у меня есть POST «/auth/register» который ждёт от меня данные json в body:
,
Я использую AJAX что бы из формы HTML отправлять эти самые данные:

    Test    

63edcac88d2ac796971451.png

Но при отправке запроса я получаю ошибку 405

В Postman на запрос я получаю корректный ответ.
В Google -> Network -> Request URL указан 127.0.0.1:8000 , хотя ожидаю я там увидеть 127.0.0.1:8000/auth/register.

  • Вопрос задан 16 февр.
  • 130 просмотров

1 комментарий

Простой 1 комментарий

Yii Framework

Упростил код максимально, но он все равно не работает. Самое интересное, что работал! Затем я что-то где-то исправлял и все перестало работать. Прошу помочь разобраться.

С основной страницы сайта отправляю запрос по клику на элементе:

$(document).ready(function () < $('#random_product').click(function () < $.ajax(< type: 'POST', url: 'site/randomproduct', dataType: 'json', success: function(data)< alert(data.rnd_title); >>); >); >); 

Действие в контроллере выглядит тоже максимально просто:

public function actionRandomproduct() < $send = [ 'rnd_title' =>'blablabla' ]; return json_encode($send); > 

При переходе на страницу http://door.loc/site/randomproduct
все прекрасно отдает:

Или глаз уже замылился, но никак не могу понять почему не работает. Ведь работало же!
В консоли пишет:

POST http://door.loc/site/randomproduct 400 (Bad Request) 

Что я делаю не так?
Последний раз редактировалось girmate 2016.03.22, 07:28, всего редактировалось 1 раз.
Осторожно! Вы общаетесь с новичком
andrei.obuhovski Сообщения: 610 Зарегистрирован: 2015.07.16, 10:50

Re: Не работает Ajax запрос

girmate Сообщения: 1534 Зарегистрирован: 2015.10.27, 12:52

Re: Не работает Ajax запрос

Сообщение girmate » 2016.03.22, 07:02

andrei.obuhovski писал(а): CSRF
Но ведь это не форма? Или я Вас не понял.
Осторожно! Вы общаетесь с новичком
girmate Сообщения: 1534 Зарегистрирован: 2015.10.27, 12:52

Re: Не работает Ajax запрос

Сообщение girmate » 2016.03.22, 07:12

Удивительно. Исправил POST на GET и данные пришли! То есть при отправке методом POST Yii проверяет метку CSRF? И что мне делать? Или оставить GET?

Осторожно! Вы общаетесь с новичком
girmate Сообщения: 1534 Зарегистрирован: 2015.10.27, 12:52

Re: Не работает Ajax запрос

Сообщение girmate » 2016.03.22, 07:16

andrei.obuhovski писал(а): CSRF

Да, все заработало при замене типа запроса. А если мне нужно отправлять данные POST что тогда делать?

Осторожно! Вы общаетесь с новичком
girmate Сообщения: 1534 Зарегистрирован: 2015.10.27, 12:52

Re: Не работает Ajax запрос

Сообщение girmate » 2016.03.22, 07:20

Ведь это защитит от ложных запросов. Где посмотреть?
Осторожно! Вы общаетесь с новичком
girmate Сообщения: 1534 Зарегистрирован: 2015.10.27, 12:52

Re: Не работает Ajax запрос

Сообщение girmate » 2016.03.22, 07:30

girmate писал(а):
andrei.obuhovski писал(а): CSRF

Да, все заработало при замене типа запроса. А если мне нужно отправлять данные POST что тогда делать?

Кстати очень странно, я не помню чтобы когда мой код работал мне вдруг захотелось поменять GET на POST, тем более что в большинстве примеров идет именно POST. Но это так, мысли в слух. Подскажите, пожалуйста, чем чревато если я оставлю метод GET?

Осторожно! Вы общаетесь с новичком
andrei.obuhovski Сообщения: 610 Зарегистрирован: 2015.07.16, 10:50

Re: Не работает Ajax запрос [решено]

Если запрос не меняет состояние системы, то можно GET
girmate Сообщения: 1534 Зарегистрирован: 2015.10.27, 12:52

Re: Не работает Ajax запрос [решено]

Сообщение girmate » 2016.03.22, 07:43

andrei.obuhovski писал(а): Если запрос не меняет состояние системы, то можно GET

Хм. Логично. Не меняет. А если кто-то попытается 1000000 раз в секунду получить мой случайный товар? Хотя, с другой стороны, никто не мешает ему это же проделать и с другими GET — запросами .
Спасибо.

Осторожно! Вы общаетесь с новичком
Onotole Сообщения: 1808 Зарегистрирован: 2012.12.24, 12:49

Re: Не работает Ajax запрос [решено]

Сообщение Onotole » 2016.03.22, 09:58

Вы в действии отправляете строку, а ожидаете json
girmate Сообщения: 1534 Зарегистрирован: 2015.10.27, 12:52

Re: Не работает Ajax запрос [решено]

Сообщение girmate » 2016.03.22, 10:20

Onotole писал(а): Вы в действии отправляете строку, а ожидаете json
Ну технически да, отправляется строка

return json_encode($send); 

Но я JS ее обратно декодирует в объект, с которым я уже нормально могу работать:

 $('#random_product').click(function () < $.ajax(< type: 'GET', url: "/site/randomproduct", dataType: 'json', success: function (data) < < какой-то код>> >); >); 

Или лучше не так? Как тогда правильнее будет показать что отправляется json?
Осторожно! Вы общаетесь с новичком
girmate Сообщения: 1534 Зарегистрирован: 2015.10.27, 12:52

Re: Не работает Ajax запрос [решено]

Сообщение girmate » 2016.03.22, 10:47

Onotole писал(а): Вы в действии отправляете строку, а ожидаете json
Исправил контроллер. Получилось следующее:

 public function actionRandomproduct() < $product = Product::find()->where(['>', 'count_categories', 0])->orderBy(new \yii\db\Expression('RAND()'))->limit(1)->one(); $settings = Settings::findOne(1); $product->setParams($settings); $send = [ 'rnd_img' => '/images/product/' . $product->id . '.jpg', 'rnd_title' => $product->title, 'rnd_model' => $product->model, 'rnd_price' => $product->priceTemplate, 'rnd_href' => Url::to(['product', 'id' => $product->id], true) ]; return \Yii::createObject([ 'class' => 'yii\web\Response', 'format' => \yii\web\Response::FORMAT_JSON, 'data' => $send ]); > 

Теперь-то там точно уже ответ в формате JSON? (взял отсюда https://github.com/yiisoft/yii2/blob/ma . ло-ответа-)

Само действие теперь выводит следующее:
234 900 руб.

«,»rnd_href»:»http://door.loc/site/product/10″>
Теперь вроде ок. Или есть замечания по коду? Сам код в JS-скрипте оставил без изменений. Код работает нормально.

Осторожно! Вы общаетесь с новичком
girmate Сообщения: 1534 Зарегистрирован: 2015.10.27, 12:52

Re: Не работает Ajax запрос [решено]

Сообщение girmate » 2016.03.22, 10:47

Onotole писал(а): Вы в действии отправляете строку, а ожидаете json
Исправил контроллер. Получилось следующее:

 public function actionRandomproduct() < $product = Product::find()->where(['>', 'count_categories', 0])->orderBy(new \yii\db\Expression('RAND()'))->limit(1)->one(); $settings = Settings::findOne(1); $product->setParams($settings); $send = [ 'rnd_img' => '/images/product/' . $product->id . '.jpg', 'rnd_title' => $product->title, 'rnd_model' => $product->model, 'rnd_price' => $product->priceTemplate, 'rnd_href' => Url::to(['product', 'id' => $product->id], true) ]; return \Yii::createObject([ 'class' => 'yii\web\Response', 'format' => \yii\web\Response::FORMAT_JSON, 'data' => $send ]); > 

Теперь-то там точно уже ответ в формате JSON? (взял отсюда https://github.com/yiisoft/yii2/blob/ma . ло-ответа-)

Само действие теперь выводит следующее:
234 900 руб.

«,»rnd_href»:»http://door.loc/site/product/10″>
Теперь вроде ок. Или есть замечания по коду? Сам код в JS-скрипте оставил без изменений. Код работает нормально.

Осторожно! Вы общаетесь с новичком
Onotole Сообщения: 1808 Зарегистрирован: 2012.12.24, 12:49

Re: Не работает Ajax запрос [решено]

Сообщение Onotole » 2016.03.22, 12:18

Достаточно было просто указать формат ответа

public function actionRandomproduct() < $product = Product::find()->where(['>', 'count_categories', 0])->orderBy(new \yii\db\Expression('RAND()'))->limit(1)->one(); $settings = Settings::findOne(1); $product->setParams($settings); $send = [ 'rnd_img' => '/images/product/' . $product->id . '.jpg', 'rnd_title' => $product->title, 'rnd_model' => $product->model, 'rnd_price' => $product->priceTemplate, 'rnd_href' => Url::to(['product', 'id' => $product->id], true) ]; Yii::$app->getResponse()->format = \yii\web\Response::FORMAT_JSON; return $send; > 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *