2016-01-31 5 views
1

im используя jquery для отправки сообщения в конечную точку сеанса моего api, чтобы получить токен входа. запрос возвращает успех, однако данные пустые. если я делаю тот же запрос в cURL, он возвращает json. Im новый для jquery. есть ли у кого-нибудь какие-либо предложения относительно проблемы?jQuery POST ответ успешно BUT данные пустые

<!DOCTYPE html> 
 
<HTML> 
 
    <HEAD> 
 
     <TITLE> login </TITLE>  
 
    </HEAD> 
 
    <LINK rel="stylesheet" type="text/css" href="login.css" /> 
 
    <BODY> 
 
    <DIV id="container"> 
 
     <DIV id="header"> 
 
     <IMG src="image.bmp" alt="logo" style="width:64px;height:64px;"/> 
 
     <H1> my service </H1> 
 
     </DIV> 
 
     <DIV id="content"> 
 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
 
     <script> 
 
     $(document).ready(function() 
 
     { 
 
     $("button").click(function() 
 
     { 
 
      $.post("www.mydomain.com/api/session", 
 
      { 
 
      username: "batman", 
 
      password: "123" 
 
      }, 
 
     function(data,status) 
 
     { 
 
      alert("Data: " + data + "\nStatus: " + status); 
 
     }); 
 
    }); 
 
}); 
 
</script> 
 
      <DIV id="loginform"> 
 
       <form method="POST"> 
 
        Username: <input type="text" name="username" /><br /> 
 
        Password: <input type="password" name="password" /><br /> 
 
        <button> welcome! </button> 
 
       </form> 
 
      </DIV> 
 
      <DIV id="description"> 
 
      <P>mydomain description</P> 
 
      <P>Join now to see what people are doing near you!</P> 
 
      </DIV> 
 
      <DIV id="register"> 
 
      <P>Dont have an account with us? </P> 
 
      <P>Register here now !!</P> 
 
      </DIV> 
 
     </DIV> 
 
      <DIV id="nav"> 
 
     </DIV> 
 
     </DIV> 
 
    </DIV> 
 
    </BODY> 
 
</HTML>

+0

И вы проверили консоль на ошибки того же происхождения? – adeneo

ответ

-1

Ниже для создания вызова Ajax, теперь то, что вы должны сделать это. Вы должны вернуть данные в формате json из URL-адреса, а затем попробовать console.log (вывод) в функции успеха, вы получите представление о том, что он работает.

$.ajax({ url: 'your_url_here', 
      data: {username: 'batman' , password : "123"}, 
      type: 'post', 
      dataType: "json", 
      success: function(output) { 
          alert(output); 
         } 
    }); 

дайте мне знать, если вы не понимаете в любом месте,

+0

Спасибо, что давай. Хорошая информация – gezinspace

+0

Пожалуйста, сообщите нам, если ваш код в сети, это поможет мне найти подходящее решение, –

+0

Я четко не знаю, что я делаю. Теперь у меня есть измененная часть скрипта: gezinspace

0

Кроме того ответ PUNIT, я совет использовать $.on() метод, который лучше, чем .click() функции.

$(function() { 
// equals to $(document).ready(function(){ but faster to wright 
    $("#loginform").on('click', 'button', function() { 
     //Punit's Code (that is good !!) 
     $.ajax({ url: 'your_url_here', 
      data: {username: 'batman' , password : "123"}, 
      type: 'post', 
      dataType: "json", 
      success: function(output) { 
         alert(output); 
        } 
     }); 
    }); 
}); 
+0

код не удался с этим – gezinspace

+0

не знаю, где он терпит неудачу ... смотрите это https://jsfiddle.net/Ganov/y7fwej75/ Работа с jQuery 1.7 – Ganov13

+0

JsFiddle с вашим кодом: https://jsfiddle.net/Ganov/4d4ehycw/1/ – Ganov13

0

Возможно, проблема заключается в том, что вам необходимо остановить отправку формы после того, как будет выполнено событие нажатия кнопки. Как написано, после завершения сценария страница обновляется, и нет возможности обрабатывать результаты почтового запроса. Возврат «false» из функции щелчка:

$("button").click(function() { 
     $.post("www.mydomain.com/api/session", 
     { 
     username: "batman", 
     password: "123" 
     }, 
     function(data,status) 
     { 
      alert("Data: " + data + "\nStatus: " + status); 
     }); 
     return false; 
    }  
    ); 

Это сделано, вы должны увидеть, возвращает ли ваш запрос по почте любые данные. Обратите внимание, что, поскольку вы отправляете в каталог, сценарий по умолчанию ищет индексный файл, например. index.php. Если это проблема, измените URL-адрес, чтобы указать на соответствующий серверный скрипт.

+0

Я направляю все запросы на моем сервере через один скрипт. с cURL url сеанса отлично работает и возвращает json с токеном auth.но теперь, даже с вашим кодом (который, по крайней мере, повторил запуск кода), данные пустые. я не могу это понять – gezinspace

+0

им все еще не получаю никаких данных. и заголовок ответа также пуст. почему это работает в curl, а не здесь. – gezinspace

+0

Вышеупомянутое работает для меня с простой локальной тестовой настройкой: я отправляю в каталог «session», содержащий index.php, который перекликается с некоторыми тестовыми данными. Полученные данные предупреждаются, как ожидалось. Может быть, это связано с тем, как вы направляете запросы? Если вы еще этого не сделали, возможно, попробуйте временно изменить URL-адрес, чтобы указать прямо на ваш серверный скрипт и посмотреть, есть ли разница. –

1

WOW! я нашел проблему, это было так просто. Мне просто нужно было использовать http: // перед моим URL. Спасибо за каждое время и помощь !.

+0

из интереса, не так вам все равно нужно указать имя файла в URL-адресе или работать с каталогом сеансов? –

+0

Он работал с URL-адресом сеанса (подделкой, но обработан в моем сценарии маршрутизации). Это имеет смысл, так как это адрес i cURL at и я получаю правильный ответ. Это просто потому, что мой mod_rewrite на сервере Apache отправляет все запросы, которые arent файловые местоположения в файловой системе на маршрутизатор, независимо от его valididy. И он обрабатывал www, mydomain.api/session как адрес файла, который не существует, поэтому он просто пошел к маршрутизатору и ничего не сделал, а затем вышел. Надеюсь, вы поймете, что я имею в виду. Спасибо за вашу помощь – gezinspace

+0

С http: // он рассматривает его как адрес, который правильно перенаправляет на физический файл в скрипте маршрутизатора – gezinspace

Смежные вопросы