我有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中的警报以提醒任何事情,它不会发生。
答案 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);
});
那应该多清理一下。