0

我是 jQuery/Ajax 领域的新手,我的小测试功能不起作用。而且我的页面也刷新了谁能帮帮我

<script type="text/javascript" >
$(document).ready(function() {
    $("#ser_itm").change(function() {
        var id=$(this).val();
        var dataString = 'id='+ id;
        alert(dataString);
        $.ajax({
            type: "POST",
            url: "bar_pull.php",
            data: dataString,
            cache: false,
            success: function(html) {
                $("#tbl").html(html);
            } 
        });
    });
});

4

4 回答 4

3

传递函数,而不是函数调用的结果:

$('.linkDetails').on('click', getDetailsFromServer);

将相同的内容应用于您的 AJAX 成功回调:

success: postToPage

此外,getDetailsFromServer()需要在将函数绑定到事件之前定义该函数。在调用之前移动函数声明.on('click', ...)

于 2013-09-27T09:49:14.777 回答
2

Arun P Johny 说的是对的!但是您的代码还有另一个问题

$('.linkDetails').on('click', getDetailsFromServer);

试试上面

于 2013-09-27T09:43:35.700 回答
2

因此,我将尝试更清楚地解释这些要点:


您无法访问C:\Users\yah\Desktop\text.txt. 这是一个服务器端路径,您的 javascript 在客户端运行。因此,这需要是您可以在浏览器中浏览到的路径,例如/pathinURL/text.txt. 您如何做到这一点取决于您的托管技术等。


你的回电也是错误的,

$('.linkDetails').on('click', getDetailsFromServer());

&

success: postToPage()

这些将在它们被命中时执行函数,(实际上它绑定了函数结果)而不是在事件发生时执行。要完成这些工作,您需要移除大括号:

$('.linkDetails').on('click', getDetailsFromServer);

&

success: postToPage

然后 this 将实际函数作为函数指针连接起来,因此实际函数将在您想要它们时被触发。

所以你的最终代码将如下所示:

$('.linkDetails').on('click', getDetailsFromServer);

function getDetailsFromServer() {

   $.ajax({
       type: 'GET',
       url: '/someURL/text.txt',
       success: postToPage
   });
}

function postToPage(data) {

   $('.textDetails').text(data);
   console.log(data);
}
于 2013-09-27T09:50:20.840 回答
0

浏览器实施的同源策略会阻止本地文件系统 url...如果页面和文件位于同一文件夹中,它可能会起作用。

有关FF的文件 URI ,请参见SOP

于 2013-09-27T09:40:53.837 回答