【发布时间】:2011-11-20 10:33:35
【问题描述】:
假设我在 html 表单上有这个...
<input id="world" type="text" onblur="return hello ('world');" />
在我的脚本中我有
function hello (id) {
document.write(id);
}
它按预期返回世界。如果我这样使用它...
function hello (id) {
var val = $('#' + id).val();
$.post("ajax.php", {
id: val,
});
}
然后id返回Array,如何让它返回我想要的用户名。
谢谢。
根据 php 方面的要求...
if (isset($_REQUEST['username'])) {
$q = $dbc -> prepare("SELECT username FROM accounts WHERE username = ?");
$q -> execute(array($_REQUEST['username']));
if (strlen($_REQUEST['username']) < 3) {
echo '<div class="error">Has to be at least 3 characters</div>';
}
elseif ($q -> rowCount() > 0) {
echo '<div class="error">Username already taken</div>';
}
else {
echo '<div class="success">Username available</div>';
}
}
else {
echo $_REQUEST;
}
如果它应该等于用户名,那么 ajax 就成功了,否则它将回显 $_REQUEST 的结果,即当前 Array。
更新
调用函数:
<input id="world" type="text" onblur="return ajax ('username');" />
原函数:
function ajax (id) {
var val = $('#' + id).val();
$('.loading').fadeIn().delay(100);
$.post("ajax.php", {id: val};
}
我在数组上做了一个 var 转储,它返回了输入到文本字段中的字符串??不是我传递给函数的 id ?!?为什么会这样?
var_dump($_REQUEST) 的示例
array
'id' => string 'dadadas' (length=7)
【问题讨论】:
-
我认为如果它匹配多个元素以从中读取值,它只会返回一个数组。页面上有多少个 id="world" 元素?
-
你需要显示更多的服务器端代码(ajax.php)......或者只是确保ajax.php返回你想要的值或处理数组以打印值......
-
提供的函数应该返回
undefined,而不是数组,因为这里没有返回语句。此代码是否已简化? -
jQuery 始终只为 ID 选择器返回一个元素。 jsfiddle.net/pimvdb/gBjnJ
-
我强烈建议您明确使用 return 子句。这不是绝对必要的,但它确实使代码更清楚地了解正在发生的事情。如果我不关心返回值,我不会使用返回,但听起来好像你确实关心返回值。
标签: php javascript variables