在使用jQuery的.Val()时出现错误

3
我正在使用 JQuery,以下是我得到的 JQuery 代码示例。
JQuery 代码:
 $.ajax({  
        type: "POST",
        url: "Login.aspx",  // Send the login info to this page
        data: str,  
        success: function(result)
        {  
             // Show 'Submit' Button
            $('#loginButton').show();

            // Hide Gif Spinning Rotator
            $('#ajaxloading').hide();  

            var resLength = (result).val().trim().length;
            alert(resLength);
            if(resLength!=0)
            {

                var arr = result.split(",");
                var fname = arr[0];
                var lname = arr[1];
                var activeCardNo = arr[2];
                var multipleTier = arr[3];
                var activeStatus = arr[4];
                var access = arr[5];
            }
        }
    }); 

在上述代码示例中,当我试图在下面的行中使用.val()时。
var resLength = (result).val().trim().length;

它正在显示错误“result.val不是一个函数”,如果我只使用result.trim().length在Firefox中可以正常工作,但在IE中会出错。
请给予建议!

顺便说一句 - 如果你使用 JSON 而不是逗号分隔的字符串,你的代码可以更加简洁。 - Kobi
请问您能否建议我如何使用它,我对JSONP一无所知..谢谢 - Manoj Singh
5个回答

6

试试这个:

var resLength = $.trim(result).length;

如果result是字符串,它没有val函数。由于跨浏览器不支持trim,因此您应该使用jQuery.trim代替。
另一种选择是直接检查值。在JavaScript中,空字符串的值为false,因此您可以进行以下检查:
result = $.trim(result);
if(result)
{
    // split, ...
}

如果 result 是一个元素,你应该将它封装在 jQuery 对象中:
var resLength = $.trim($(result).val()).length;

非常好的回答细节。 - Knowledge Craving

0

这段代码应该是:

var resLength = result.val().trim().length;
alert(resLength);

写成 "(result)" 而不是 "result" 会导致错误。这是因为此处的变量是 "result" 本身。

希望能对你有所帮助。


我无法重现这个问题,并且想不到一个简单的场景,其中在变量周围加上 ( ) 会有所不同。 - Kobi

0

(result).val(); 这是错误的写法

上面这个用于获取输入类型的 HTML 值

如果结果是 HTML,请使用

.text(); or .html()

0

正确的语法是result.trim().length,而IE不支持trim()(参见.trim() in JavaScript not working in IE),因此会报错。

尝试将链接问题中的被接受的答案代码添加到您的代码中,看看是否可以解决问题。


0

它不是一个jQuery对象,它只是返回的ajax的文本值


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接