javascript - PHP没有将变量返回给ajax调用
问题描述
我有一个 ajax 请求,并且无法正确返回 JSON 响应以进行后续处理。
在下面的 PHP 代码中,$unameExists 返回 true 或 false,但是当我将其发送回 JS 成功例程时,console.log(data.unameExists); 返回未定义。因此,我的 if/else 语句正确执行。
HTML
<input type="text" name="username" id="username" value="<?php echo $this->username;?>" class="middle" />
JS
$('#username').on('blur', function() {
$.ajax({
url: "?module=Iders&controller=index&action=check_user",
data: { 'username' : $('#username').val() },
type: "POST",
dataType: 'json',
success: function(data, unameExists) {
console.log(data.unameExists);
console.log(unameExists);
if(data.unameExists === 'true') {
alert('Username is NOT available!');
}
else {
alert('Username is available!');
}
},
error: function(data){
//error
}
});
PHP
public function check_userAction() {
$username = trim($_REQUEST['username']);
$unameExists = Users_Model_Users::isExistUsername($username);
echo $this->renderScript('json', unameExists);
}
解决方案
阅读手册会有所帮助:http: //api.jquery.com/jquery.ajax/
您没有按照 jQuery 的预期使用回调参数。第一个成功回调参数是从服务器返回的完整数据。它是一个字符串或某种对象,基于dataType
.
由于您没有设置dataType
,jQuery 会猜测返回的内容,并且可能会直接解析为 JSON blob。
使用以下console.log()
语句检查data
-argument 的内容。
success: function(data) {
/* When your PHP script returns a variable that is encoded into JSON: */
console.log(data.unameExists);
/* In all other cases check the `data` arguemtn directly: */
console.log(data);
},
推荐阅读
- google-cloud-platform - Gcp Cloud 部署管理器是否支持创建 Api 网关?
- html - 如何修复instagram图像嵌入错误
- python - 计算图像中给定轮廓级别以上的总面积
- excel - 基于一个特定的数字,我如何计算出所需的百分比增加,使用将应用的百分比减少,回到那个数字?
- python - 如何使用 for 循环从 json db 中提取键
- python - 当有数字和非数字数据时,如何对 Pandas DataFrame 进行 8 次下采样?
- javascript - 从 XHR 请求中返回一个值
- html - Chrome 字体大小从 chrome-setting-appearance 更改不适用于我的反应页面
- javascript - 如何使用 react-native-thermal-receipt-printer 在打印数据中自定义和添加 javascript
- xml - 如何使用 XSLT 正确删除 XML 标记