javascript
  • jquery
  • 2014-01-12 141 views 0 likes 
    0

    为什么name未定义?html元素的值属性未定义

    $('#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; 
          )}; 
         } 
        }); 
    }); 
    
    +0

    POST和 “RAS =”(它看起来像GET)看起来怪怪的(但我不知道)。 – Sliq

    回答

    0

    您可以检查几件事情: 确保您在发送前有数据。你有李的价值属性吗?或者如果你想得到li的内容,使用html()或txt()。但是可能你想在里面获得输入字段值?然后使用$(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的”,但它不会是问题,我想。

    您还可以使用控制台来看看是怎么回事。

    0

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

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

    +0

    Thx求助!!! –

    1

    如果你的意思是,raspuns似乎是不确定的,也许是因为你没有从test.phpecho回应?

    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}, 
        ... 
    }); 
    
    相关问题