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