来自客户端的回调无法正常工作

时间:2013-10-10 22:29:32

标签: php jquery html post

我有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文件在这一点上真的没有意义我为调试做了很多改变,但是“else”语句中的mysql查询正在传递并添加到数据库中但是它下面的echo不会被返回到它将在html中被提醒。事实上,我可以更改html中的警报以提醒任何事情,它不会发生。

1 个答案:

答案 0 :(得分:0)

可能有很多原因导致这种情况发生。

您是否启用了错误报告?如果没有,请将其放在php分隔符之后:

ini_set( "display_errors", true );

此外,数据是跨域发送的吗?把它放在上面一行之后,

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

现在,它可能是POSTing,但这并不一定意味着数据在服务器端可用。当我在JQuery中使用post()函数时,我更喜欢数据参数的字符串。看起来一些变量也是未定义的。

所以我会这样重写:

 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);
    });

那应该多清理一下。