2010-11-24 74 views
0

下面是代码:jQuery的形式不工作

<script type="text/javascript"> 
    $.ajaxSetup ({ 
     cache: false 
    }); 

    var ajax_load = "<img src='load.gif' alt='Loading...' />"; 

    $('#create').submit(function() { 
     $("#result").html(ajax_load); 
     $.get("actions/create.php", { url: longform }, 
      function(data){ 
       $('#result').html(data); 
      }); 
     ); 
    }); 
</script> 

但所发生的一切是在地址栏中更改网址:

http://domain.com/?longform=http://www.google.com/&submit=Submit 

的形式和结果的div:

<form name="create" action="" id="create"> 
    <input type="text" name="longform" /> <input type="submit" name="submit" value="Submit" /> 
</form> 

<div id="result"> 
results go here 
</div> 

我需要在头部有ajax代码吗?或者这是否都无所谓..

UPDATE

的代码我的网页上,现在看起来是这样的:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
<script type="text/javascript"> 
    $.ajaxSetup ({ 
     cache: false 
    }); 

    var ajax_load = "<img src='img/load.gif' alt='loading...' />"; 

    $('#create').submit(function() { 
     event.preventDefault(); 
     $("#result").html(ajax_load); 
     $.get("actions/create.php", { url: longform }, 
      function(data){ 
       $('#result').html(data); 
      }); 
     ); 
    }); 
</script> 
</head> 

<body> 
<form name="create" action="" id="create"> 
    <input type="text" name="longform" /> <input type="submit" name="submit" value="Shorten" /> 
</form> 

<div id="result"> 
123 
</div> 

还是行不通的。 actions/create.php简单地回显一个foobar字符串来测试它。

UPDATE

我也试过这样:

$('#create').submit(function() { 
    var formdata = $(this).serialize(); 
    $.ajax({ 
     url: 'actions/create.php', 
     data: formdata, 
     success: function(responseText){ 
       $('#result').html(responseText); 
     } 
    }); 
    return false; 
}); 

但这也并不工作..可以东西在我的htaccess的是与它搞乱?

回答

0

好的,它工作了一次,我把所有的jQuery下面的形式和结果分区..多么乏味。

+1

这是因为表单在脚本执行时不是DOM的一部分。您应该将脚本包装为`document.ready`事件的一部分。 `jQuery(function($){/ *您的代码在这里* /});` – zzzzBov 2010-11-24 20:35:57

-1

从表单标签移除action属性

1

function(data){ 
    $('#result').html(data); 
}); 

应该

function(data){ 
    $('#result').html(data); 
} 

,你需要防止表单的默认行为提交操作(提交表单通过POST):

$('#create').submit(function() { 
    // ... 
    return false; 
}); 

你可以(另外)看看jQuery的.load()-method,它确实做了你正在做的,但更短。整个事情是这样的:

$('#create').submit(function() { 
    $("#result").load("actions/create.php", { url: longform }); 
    return false; 
}); 
1

submit事件不会发生之前提交的,而不是它,这样你的形式提交执行JavaScript的正常之后。你需要通过无论是从事件处理程序返回false取消正常提交:

$('#create').submit(function() { 
    $("#result").html(ajax_load); 
    $.get("actions/create.php", { url: longform }, 
     function(data){ 
      $('#result').html(data); 
     }); 
    ); 
    return false; 
}); 

或者您可以拨打preventDefault。看到http://api.jquery.com/event.preventDefault/