html元素的value属性未定义

时间:2014-01-12 00:56:25

标签: javascript jquery

为什么name未定义?

$('#langs li').click(function(){
    var name = $(this).attr('value');
    $.ajax({
        type: "POST",
        url:'test.php',
        data: 'name='+name,
        success:function(raspuns){
            //$('#content1').html(raspuns);
            var ras = raspuns;
            $.ajax({
                type: "POST",
                url: "index.php",
                data: 'ras='+ras;
            )};
        }
    });
});

3 个答案:

答案 0 :(得分:1)

如果您的意思是raspuns似乎未定义,可能是因为您没有echo来自test.php的回复?

<强> test.php的

...
echo 'this is my response';

AJAX致电

$.ajax({
  ...
  success: function(raspuns) {
    // raspuns == 'this is my response'
  }
});

而且,如果您传递POST数据,我认为如果传递JSON对象会更好,如下所示:

$.ajax({
  url: 'test.php',
  type: 'POST',
  data: {name: name},
  ...
});

答案 1 :(得分:1)

您可以查看以下几点: 确保在发送之前有数据。你有李的价值属性吗?或者如果你想获得li内容,请使用html()或txt()。但是你可能想在li里面获得输入字段值?然后使用$(this).find(“input”)。val()如果你只有一个输入。 然后其他人检查:

1)访问http://example.com/test.php以确保它正确回应响应。您可能在php中有错误或链接可能无法访问。

2)你的网址是这样的:http://example.com/test.php?如果您的本地计算机中有虚拟主机,例如http://example.local/test.php,那也没关系。但是如果你有类似

的东西,它将无法工作
http://localhost/mysite/test.php 

除非您在ajax调用完整链接中更正路径。

3)确保您的javascript在发送之前没有失败。我的意思是,你能做警报(姓名)吗?您还可以在成功之上使用beforeSend()来检查是否正确结束数据。

4)确保您没有尝试制作跨域ajax请求,因为您无法使用POST执行此操作。

5)我认为可以尝试使用“/test.php”而不是“test.php”,尽管这不是问题。

您还可以使用控制台查看正在发生的事情。

答案 2 :(得分:0)

li个元素不支持value属性。也许您正在通过li寻找输入或.html()的内容。

请参阅此演示,name未定义:http://jsbin.com/IzOXiJOZ/2/edit