AJAX不读取PHP-JSON-echo
我有一个简单的jQueryAjax请求,它将用户输入从文本框提交到PHP文件。下面是它的代码:AJAX不读取PHP-JSON-echo,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我有一个简单的jQueryAjax请求,它将用户输入从文本框提交到PHP文件。下面是它的代码: $.ajax({ url: url, type: type, data: data, dataType: 'json', success: function(response){ console.log(response); } }); PHP文件基本上会让用户登录。在我将数据类型:“json”添加到AJAX请求之前,一切都很顺利。现在
$.ajax({
url: url,
type: type,
data: data,
dataType: 'json',
success: function(response){
console.log(response);
}
});
PHP文件基本上会让用户登录。在我将数据类型:“json”添加到AJAX请求之前,一切都很顺利。现在,每当我点击我的提交按钮,没有任何日志。这是我的PHP文件:
<?php
include 'dbcon.php';
if ( isset( $_POST['text_login_username'], $_POST['text_login_password'] ) ) {
$loginResult = array();
$dbcon = getConnection();
$userName = mysqli_real_escape_string( $dbcon, $_POST['text_login_username'] );
$password = mysqli_real_escape_string( $dbcon, $_POST['text_login_password'] );
$loginQuery = "SELECT * FROM userData WHERE userName='$userName' AND userPassword='$password'";
$queryResult = mysqli_query( $dbcon, $loginQuery );
$legalRows = mysqli_num_rows( $result );
if ( $legalRows == 1 ) {
$loginResult['allClear']=0;
} else {
$loginResult['allClear']=1;
}
echo json_encode( $loginResult );
}
?>
我可以确保正确设置了指向文件、帖子等的正确链接,因为在我尝试发送json_encode变量之前,这是有效的。任何帮助都将不胜感激
谢谢
~z~嘶嘶作响
更新:我在我的AJAX调用中添加了一个错误:设置,并在我提交时运行
更新:查看我的答案。这就是我的解决方案。检查此代码
demo.php
return.php
试试这个。确保JS中的数据变量具有JS对象的正确语法。关于JSON对象的更多信息
你能试试这个吗?添加到服务器脚本中 我的json_编码也没有返回任何东西,直到我在升级PHP版本时添加了它。这与只在UTF-8上工作的json_编码有关
mysqli_query($dbcon, "SET NAMES utf8");
我还将此添加到脚本的顶部
mb_internal_encoding("UTF-8");
1.-在PHP代码中使用标题内容类型:
header('Content-type: application/json');
2.-在jQuery ajax代码中使用内容类型标题:
contentType:'application/json; charset=utf-8'
3.-检查您的ajax jQuery代码是POST还是GET默认值:GET:
type: "post"
4.-在PHP中打印JSON:
if( array_key_exists("text_login_username",$_POST) AND array_key_exists("text_login_password",$_POST) )
{
header('Content-type: application/json');
/**
* Create link
*/
$link = getConnection(); /* user function */
/**
* Default value for result
*/
$result = array(
"allClear" => 1
);
/**
* first arg is connection
* mysqli_real_escape_string ( mysqli $link , string $escapestr )
*/
$username = mysqli_real_escape_string( $link , $_POST["text_login_username"] );
$password = mysqli_real_escape_string( $link , $_POST["text_login_password"] );
/**
* Select "1" is best way with LIMIT; you dont need all fields... ¬¬ bad way...
**/
$source = mysqli_query( $link , "SELECT 1 FROM userData WHERE userData.userName='$username' AND userData.userPassword='$password' LIMIT 1" , MYSQLI_STORE_RESULT );
/**
* count
*/
if( mysqli_num_rows( $source ) == 1 )
{
$result["allClear"] = 0;
}
/**
* print json
*/
echo json_encode( $result );
/**
* prevent others prints
*/
exit;
}
5.-用于验证阵列中是否存在密钥
bool array_key_exists( mixed $key , array $search )
6.-使用此$.ajax代码:
contentType:'application/json; charset=utf-8'
祝你好运 这个解决方案很奇怪。mysqli_num_行出现问题。我只是这样做了
$legalRows=$queryResult->num_rows;
它很好用。谢谢你的回答。我肯定学到了一些我将要实施的新东西 纯文本密码:您是否尝试过标题'Content-type:application/json'@cryocide不,我没有,我到底把它放在哪里?根据您使用的浏览器,可能需要包含具有特定配置的标头,有时IE需要它。您是否使用伪变量单独运行php文件,以确保将真正的json返回给客户端?或者您是否看到控制台上返回了良好的json?你会考虑把Ajax添加到Ajax中去看看会发生什么吗?谢谢你这么做,我一定要看看。很棒的代码,但是在html文件中,它调用response.php,答案告诉我们调用它return.php——我花了几秒钟才弄明白它为什么不起作用。您的示例说创建两个文件return.php和demo.html,但是在demo.html中,ajax代码调用response.php`$.ajax{type:POST,dataType:json,url:response.php,data:data,success:functiondata`@Adam对不起,这是我的错误。现在我可以修改名为demo.php的文件名。现在请检查您的sel。谢谢请显示数据变量在JS代码中的样子。您的数据变量不在格式正确。它需要是一个JSON对象。你是说我的PHP变量还是Javascript变量?嗯,这似乎是正确的,当我console.logdata时,我得到了对象{text_login_用户名:ru毯fizz,text_login_密码:test}这应该也能正常工作吗?mysqli_num_rows$queryResult;
if( array_key_exists("text_login_username",$_POST) AND array_key_exists("text_login_password",$_POST) )
{
header('Content-type: application/json');
/**
* Create link
*/
$link = getConnection(); /* user function */
/**
* Default value for result
*/
$result = array(
"allClear" => 1
);
/**
* first arg is connection
* mysqli_real_escape_string ( mysqli $link , string $escapestr )
*/
$username = mysqli_real_escape_string( $link , $_POST["text_login_username"] );
$password = mysqli_real_escape_string( $link , $_POST["text_login_password"] );
/**
* Select "1" is best way with LIMIT; you dont need all fields... ¬¬ bad way...
**/
$source = mysqli_query( $link , "SELECT 1 FROM userData WHERE userData.userName='$username' AND userData.userPassword='$password' LIMIT 1" , MYSQLI_STORE_RESULT );
/**
* count
*/
if( mysqli_num_rows( $source ) == 1 )
{
$result["allClear"] = 0;
}
/**
* print json
*/
echo json_encode( $result );
/**
* prevent others prints
*/
exit;
}
bool array_key_exists( mixed $key , array $search )
$.ajax({
url: "json.php",
type: "post",
data: {
text_login_username : "xxxx",
text_login_password : "xxx"
},
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(response)
{
console.log(response);
}
});
$legalRows=$queryResult->num_rows;