2013-10-10 4 views
0

У меня есть html-файлы клиентов (часть кросс-платформенного приложения), которые выходят в php-файл и должны получать переменную или строку обратно, она правильно размещает данные, но не получает его обратно.Обратный звонок с клиентской стороны не работает

Это срабатывает на подать (на стороне клиента .html):

var $form = $(this), 
     $submit = $form.find('button[type="submit"]'), 
     username_value = $form.find('input[name="username"]').val(), 
     password_value = $form.find('input[name="password"]').val(), 

     url = $form.attr('action'); 

    /* Send the data using post */ 

     $.post(url, {username: username_value, password: password_value},function (data) { 

     alert(data); 
    }); 

это файл PHP:

<?php 
$username = $_POST['username']; 
$password = $_POST['password']; 

$DBusername = 'root'; 
$DBpassword = ''; 
$project = mysql_connect('localhost',$DBusername, $DBpassword); 

mysql_select_db('PickMeUpDatabase', $project); 

$sql="SELECT * FROM users WHERE username='$username' and password='$password'"; 
$result=mysql_query($sql); 

$count=mysql_num_rows($result); 


if($count==1){ 
echo 'console.log("hi");'; 
     $message = "saved successfully"; 
     echo $message; 
} 
else 
{ 
    $sql = "Insert into users Values('me','myself','I','".$username."','Irene')"; 
mysql_query($sql); 
     echo "Helooo"; 
} 
    ?> 

Я знаю, что PHP файл реально не имеет смысла в этом месте я изменил много для отладки, но запрос mysql в инструкции «else» передается и добавляется в базу данных, но эхо прямо под ним не возвращается туда, где оно будет отправлено в html. На самом деле я могу изменить предупреждение в html, чтобы предупредить что-нибудь, и это не произойдет.

+0

Пробовал ли вы использовать консоль Firebug для проверки ответа на вызов Ajax? – TheWolf

+0

Попытка, что теперь, Ill update с ответом – DasBeasto

+0

Может быть $ form.find возвращает массив, поэтому вам нужно будет выбрать первый элемент. –

ответ

0

Могло быть много причин, почему это происходит.

У вас есть сообщение об ошибке? Если нет, поместите это после разделителя php:

ini_set("display_errors", true); 

Кроме того, передаются ли данные перекрестного домена? Поместите это после предыдущей строки,

header('Access-Control-Allow-Origin: *'); 

Теперь, это может быть размещая, но это не обязательно означает, что данные можно использовать на стороне сервера. Когда я использую функцию post() в JQuery, я предпочитаю строки для параметров данных. Похоже, что некоторые переменные также не определены.

Так что я бы переписать это так:

var $form = $(this), 
     $submit = $form.find('button[type="submit"]'), 
     username_value = $form.find('input[name="username"]').val(), 
     password_value = $form.find('input[name="password"]').val(), 

      /* Turn the variables into strings- for simplicity! */ 
     url = "http://localhost/location/of/php_file.php"; 


     var data='username='+username_value+'&password='+password_value; 
     $.post(url, data, function (data) { 

     alert(data); 
    }); 

Это должно очистить его немного больше.

+0

Хорошо, я изменил его, чтобы выглядеть так, казалось, не оказал никакого влияния. POST по-прежнему выходит в соответствии с firebug, и запрос mysql все еще работает, но ответов нет. Также я не думаю, что правильно добавил репортера ошибок, куда именно он должен идти, и где он будет выводить ошибки? – DasBeasto

+0

Поместите отчет об ошибках в первую строку в файле PHP. Вывод будет в поле предупреждения, вызванном предупреждением (данными) в функции jquery. – FredTheWebGuy

+0

Кроме того, если все остальное не удается, то это ошибка MYSQL, терпящая неудачу. – FredTheWebGuy

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