Как добиться такого же поведения в Ajax

$usrname = $this->session->userdata('username'); $password = $this->session->userdata('password'); $data = array('userName'=>urlencode($usrname),'password'=>urlencode($password)); $data_string = json_encode($data); $datanew = "loginemployee=". $data_string; $method = 'post'; $format = 'application/json'; $this->rest->format($format); $login_url = $this->login_url; //print_r($login_url); //exit; $result = $this->rest->{$method}($login_url, $datanew); 

Может кто-нибудь, пожалуйста, помогите мне в этом. Это на самом деле скрипт PHP для входа на веб-сайт, мне нужно добиться того же в моем приложении Cordova, которое использует только HTML и JQuery, поэтому, пожалуйста, предоставьте мне информацию о том, как это сделать.

 $(document).ready(function(){ $('form#loginForm').submit(function() { // loginForm is submitted var username = $('#username').attr('value'); // get username var password = $('#password').attr('value'); // get password alert(username); var UserData= {"userName":username , "password":password}; var jsonString=JSON.stringify(UserData); var datanew = "loginemployee=". $jsonString; if(jsonString) { alert("encoded"+jsonString); } if (username && password) { // values are not empty $.ajax({ type: "POST", url: "http:// i know URL", // URL contentType: "application/json; charset=utf-8", dataType: "json", // send username and password as parameters data: datanew, // script call was *not* successful error: function (XMLHttpRequest, textStatus, errorThrown) { $('div#loginResult').text("responseText: " + XMLHttpRequest.responseText + ", textStatus: " + textStatus + ", `enter code here`errorThrown: " + errorThrown); $('div#loginResult').addClass("error"); }, // error // script call was successful // data contains the JSON values returned by the Perl script success: function (data) { alert("success"); if (data.error) { // script returned error $('div#loginResult').text("data.error: " + data.error); $('div#loginResult').addClass("error"); } // if else { // login was successful alert(data); console.log(data); $('form#loginForm').hide(); $("#loginResult").append('all good'); } //else } // success }); // ajax/ if } // if else { $('div#loginResult').text("enter username and password"); $('div#loginResult').addClass("error"); } // else $('div#loginResult').fadeIn(); return false; }); }); 

Вы сделали некоторые ошибки в коде, и я перечислил эти вещи ниже.

  1. Не используйте $('#username').attr('value') . Вместо использования $('#username').val() . Потому что $('#username').attr('value') возвращает значение элемента при создании html. Но $('#username').val() вернет текущее значение. То же, что и изменение $('#password').attr('value') до $('#password').val() . Для получения дополнительной информации проверьте этот пост .
  2. Оператор конкатенации в javascript – это + нет . , А также добавлена ​​переменная типа $jsonString .
  3. В вашем php-коде сервера, если вы используете $_POST['loginemployee'] для получения значений post , не используйте contentType: "application/json; charset=utf-8", . Потому что он будет использовать весь контент, включая ключ, как недопустимый json, например loginemployee={"userName":"cloud","password":"cloudnine"} . Если вам это нужно, вам нужно использовать file_get_contents('php://input') для получения содержимого сообщения. Но лучше не использовать contentType в ajax. Таким образом, вы можете легко получить сообщение с помощью $_POST['loginemployee'] .
  4. А также, если ответ json означает использование dataType в ajax, иначе не используйте это. Для получения дополнительной информации о contentType и dataType проверьте этот пост .

Итак, я обновил код. Проверьте и ответьте, если есть какие-либо проблемы. Надеюсь, он будет работать по вашему желанию.

 $(document).ready(function(){ $('form#loginForm').submit(function() { // loginForm is submitted var username = $('#username').val(); // get username var password = $('#password').val(); // get password alert(username); var UserData= {"userName":username , "password":password}; var jsonString=JSON.stringify(UserData); var datanew = "loginemployee="+ jsonString; if(jsonString) { alert("encoded"+jsonString); } if (username && password) { // values are not empty console.log(datanew); $.ajax({ type: "POST", url: "http://url_to_post", // URL // contentType: "application/json; charset=utf-8", // If reply is json means uncomment the below line. // dataType: "json", // send username and password as parameters crossDomain : true, data: datanew, // script call was *not* successful error: function (XMLHttpRequest, textStatus, errorThrown) { $('div#loginResult').text("responseText: " + XMLHttpRequest.responseText + ", textStatus: " + textStatus + ", `enter code here`errorThrown: " + errorThrown); $('div#loginResult').addClass("error"); }, // error // script call was successful // data contains the JSON values returned by the Perl script success: function (data) { alert("success"); if (data.error) { // script returned error $('div#loginResult').text("data.error: " + data.error); $('div#loginResult').addClass("error"); } // if else { // login was successful console.log(data); $('form#loginForm').hide(); $("#loginResult").append('all good'); } //else } // success }); // ajax/ if } // if else { $('div#loginResult').text("enter username and password"); $('div#loginResult').addClass("error"); } // else $('div#loginResult').fadeIn(); return false; }); });