Вызов веб-сервиса PHP из скрипта Java - PullRequest
2 голосов
/ 22 марта 2012

Я новичок в разработке PHP и Javascript. Я пытаюсь выполнить этот код, но он не работает

<?php
if(isset($_POST['username']) and isset($_POST['password'])) {

 // do logic for logining in (usually query your db)
if ($_POST['username'] == 'test' && $_POST['password'] == 'test') {
$data['success'] = true;
$data['message'] = 'Login succesful';
} else {
$data['success'] = false;
$data['message'] = 'Login failed';
}
// return json
echo json_encode($data);

}
?>

вот файл Javascript

<script>
    $(document).ready(function() {
    alert("dddd");
        $('#loginForm').submit(function() {
            $('#output').html('Connecting....');
            var postTo = 'http://localhost/Login/login.php';
            alert(postTo);
            $.post(postTo,{username: $('[name=username]').val() ,   password: $('[name=password]').val()} , 
                function(data) {

                    if(data.message) {
                        alert(data);
                    } else {
                        $('#output').html('Could not connect');
                    }

                },'json');

            return false;
        });
    });
</script>

заранее!

Ответы [ 4 ]

1 голос
/ 22 марта 2012

Предполагая, что $data нигде не определено, это должно исправить:

<?php
    $data = Array();
    if(isset($_POST['username']) and isset($_POST['password'])) {

         // do logic for logining in (usually query your db)
        if ($_POST['username'] == 'test' && $_POST['password'] == 'test') {
        $data['success'] = true;
        $data['message'] = 'Login succesful';
    } else {
        $data['success'] = false;
        $data['message'] = 'Login failed';
    }
    // return json
    echo json_encode($data);

    }
?>
0 голосов
/ 22 марта 2012

Как ни странно, у меня это работает в Firefox. У меня была проблема с IE некоторое время назад, и решение было добавить правильные заголовки в верхнюю часть скрипта php:

<?php
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
...

РЕДАКТИРОВАТЬ: Воспроизведение его путем вызова с другого компьютера. попробуйте изменить var postTo = 'http://localhost/test/test.php'; на var postTo = 'test/test.php';.

вот что я тестировал (я рекомендую вам использовать firebug и console.log () вместо alert ()):

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
 $('#output').html('somestuff');

    $('#loginForm').submit(function() {
        $('#output').html('Connecting....');
        var postTo = 'http://localhost/test/test.php';
        //alert(postTo);
        $.post(postTo,{username: $('[name=username]').val() ,   password:  $('[name=password]').val()} , 
            function(data) {

                if(data.message) {
                   //  console.log(data);
                    $('#output').html('Ya got it: '+ data.message);
                } else {
                    $('#output').html('Could not connect');
                }

            },'json');

        return false;
    });
});
</script>
</head>

<body>
<form id="loginForm">
    <input type="text" name="username" value="test"/>
    <input type="text" name="password" value="test"/>
    <input type="submit"  />
</form>
<div id="output"></div>
</body>
0 голосов
/ 22 марта 2012

Установите Firefox с расширением Firebug, откройте его с помощью F12, включите вкладки «NET», «SCRIPT» и «CONSOLE».Поместите точку останова в сценарий (вокруг предупреждения (postTo)), используя вкладку SCRIPT.Обновите страницу и пройдитесь по ней, следя за консолью.Используйте вкладку NET, чтобы проверить правильность как запроса, так и ответа сценария php.

Приведенный выше код работает в моей среде (с небольшим изменением оповещения (данных) на оповещение (data.message)).У меня работает следующее:

login.php:

<?
if(isset($_POST['username']) and isset($_POST['password'])) {
// do logic for logining in (usually query your db)
if ($_POST['username'] == 'test' && $_POST['password'] == 'test') {
$data['success'] = true;
$data['message'] = 'Login succesful';
} else {
$data['success'] = false;
$data['message'] = 'Login failed';
}
// return json
echo json_encode($data);

}
?>

login.html:

<head>
<script type='text/javascript' src='jq/jquery.js'></script>

<script type='text/javascript'>
    $(document).ready(function() {
        alert("dddd");
        $('#loginForm').submit(function() {
            $('#output').html('Connecting....');
            var postTo = 'http://localhost/login.php';
            alert(postTo);
            $.post(postTo,{username: $('[name=username]').val() ,   password: $('[name=password]').val()} , 
                function(data) {

                    if(data.message) {
                        alert(data.message);
                    } else {
                        $('#output').html('Could not connect');
                    }

                },'json');

            return false;
        });
    });
</script>
</head>

<body>
<form id='loginForm'>
  <input type='text' id='username' name='username'/>
  <input type='text' id='password' name='password'/>
  <button type='submit'>Submit</button>
</form>
</body>
0 голосов
/ 22 марта 2012
if(isset($_POST['username']) and isset($_POST['password'])) {

должно быть

if(isset($_POST['username']) && isset($_POST['password'])) {

как первая поправка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...