JavaScript和函数变量

问题描述:

让我们说我有这样的HTML表单上...JavaScript和函数变量

<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阵列,我怎样才能使它返回用户名像我想它。

谢谢。

按照要求的事情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其结果是目前阵列

UPDATE

调用函数:

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

} 

我做的阵列一个变种转储,并返回已输入到字符串文本字段?不是我传递给函数的ID?!?这是为什么发生?

var_dump($_REQUEST)

array 
'id' => string 'dadadas' (length=7) 
+2

我认为它只会返回一个数组,如果它匹配多个元素来读取值。你有多少个元素id =“world”? – Rup

+0

你需要显示更多的服务器端代码(ajax.php)...或者只是确保ajax.php返回你想要的值或者处理数组来打印值... – Tarek

+0

提供的函数应该返回'undefined',而不是数组,因为这里没有return语句。这个代码是否发布了简化? – Tejs

你的PHP代码检查username

if (isset($_REQUEST['username'])) { 

更改您的代码提供username代替id

function hello (id) { 
    var val = $('#' + id).val(); 
    $.post("ajax.php", { 
     username: val 
    }); 
} 

$_REQUEST是一个数组,因为没有找到请求参数username,因此您是echo ing。

+0

但我希望它是id,如在原始函数中id将是用户名... – carlgcode

+1

'id'永远不是用户名 - 它是包含用户名的输入字段的标识符。 'var val = $('#'+ id).val();'将用户名分配给val,'username:val'告诉服务器'$ _REQUEST [“username”]'等于'val'。 – Dennis

+0

那么我怎么会把文本框的CSS ID放在那里?我想要它,所以我可以调用任何输入的函数,而不必定义$ _REQUEST的名称,但附加到它的ID? – carlgcode

你可能得使用相同的“ID”值的页面上的多个元素。这不是有效的标记,因为“id”值在整个页面中必须是唯一的。

编辑 —重新使用“id”值确实是一个坏主意,但它不会导致该行为。我怀疑可能有其他代码可能会涉及更多解释。在这里我要离开这个答案,但没有人应该为它投票:-)

+0

页面上只有一个世界ID: -/ – carlgcode

+0

它是无效的,但不会导致此行为。 http://jsfiddle.net/pimvdb/gBjnJ – pimvdb

+0

是的@pimdvd我同意 - 在我输入答案后,我开始抓我的头,因为它看起来很奇怪,jQuery会这样做。 – Pointy