【问题标题】:why is url getting appended upon a ajax request using jquery form submission?为什么使用 jquery 表单提交在 ajax 请求上附加 url?
【发布时间】:2011-11-02 21:14:56
【问题描述】:

被 jquery ajax 表单提交卡住了!这是sn-p的代码:

Javascript/HTML 代码:

<form action="">
<button type="submit" class="submit-button-minus" id="submit-minus" name="submit-minus"><span class="hide-text"></span></button>                
</form>

<form action="">
<button type="submit" class="submit-button-plus" id="submit-plus" name="submit-plus"><span class="hide-text"></span></button>
</form>

<!--store current page id from php variable into javascript variable-->
<?php echo "<script> jsPageID = " .$page_id. ";</script>"; ?>                   
<?php echo "<script> jsUsername = '" .$_SESSION['username']. "' ;</script>"; ?>     


<script type="text/javascript">
$('document').ready(function(){

jsPageID = parseInt(jsPageID); 
$('#submit-minus').click(function(){
jsPlusOrMinus = "minus";                    
ajax_painting_rating(jsPlusOrMinus, jsPageID, jsUsername);                  
});

$('#submit-plus').click(function(){
jsPlusOrMinus = "plus";
ajax_painting_rating(jsPlusOrMinus, jsPageID, jsUsername);
});

function ajax_painting_rating(jsPlusOrMinus, jsPageID, jsUsername)
{
$.get(
'ajax-painting-rating.php', 
{plus_or_minus: jsPlusOrMinus, page_id: jsPageID, user_name:jsUsername }, 
function(data){     
$('#rating-value').html(data);
}
);
}

});

</script>

现在是 PHP 代码:

<?php
include("include_db_connection.php");

$get_plus_or_minus = $_GET['plus_or_minus'];
$get_page_id = $_GET['page_id'];
$get_user_name = $_GET['user_name'];

if($get_plus_or_minus == "plus")
{

    $rating=1;
    $rating_insert_query =  "INSERT INTO ..............";       

    $rating_insert_result = mysqli_query($db_conn, $rating_insert_query);
}

if($get_plus_or_minus=="minus")
{

    $rating=-1;
    $rating_insert_query =  "INSERT INTO ..............";       
    $rating_insert_result = mysqli_query($db_conn, $rating_insert_query);
}

/* more queries here....*/  
/*this is what i will be returning back from the server, to the ajax request*/

echo $FINAL_RESULT;

?>

现在,当我尝试执行上述代码时,“有时”表单会提交给 db。我想不出为什么“有时”的原因。

此外,在处理请求后,有些数据会以某种方式附加到 url。示例:如果网页的原始 url,在发出 ajax 请求之前类似于“page.html?id=6”,那么在执行 ajax 请求时,页面 url 被附加如下:

"page.php?id=6&submit-minus="(如果 submit-minus 按钮用于调用 ajax 请求)

我不明白为什么 submit-minus 会附加到 url,而且很少有数据会成功插入到数据库中。

感谢您的宝贵时间。

【问题讨论】:

    标签: jquery html ajax forms url


    【解决方案1】:

    查询变量 submit-minus 和 submit-plus 被附加到 URL,因为您正在执行 GET,GET 将在提交时获取任何表单变量,并将它们附加到 URL。

    我看不到足够多的数据库代码来告诉您为什么它有时有效而有时无效,但只有在设置了 $get_plus_or_minus 时您才会写入数据库。因此,如果您的网址显示“submit-minus=" 没有任何值,您将不会写入数据库。

    【讨论】:

    • 但这不应该是一个ajax请求吗?那么使用 GET 会将任何数据附加到 url 中吗?另外,我注意到整个页面再次加载,在这种情况下,我根本看不到 ajax 在执行时的效果。为什么会这样?
    • 您正在使用 HTML 按钮标签,具有提交类型,这使得它可以提交表单。如果将类型更改为按钮,则不会提交表单
    • oooooopsiee..!!!!解决了。认为只需将提交按钮的类型从“提交”更改为“按钮”就可以解决整个问题!我花了大约 2-3 个小时摆弄代码并使用不同的表单发布方法,什么不是......!!!根本懒得看这条线!非常感谢..!!!
    • 嗯,这就是这个网站存在的原因:)
    • 只是一个小问题 - 单击加号/减号按钮时,Firefox 会正确处理 ajax 请求。即使我一直单击这些按钮,ajax 代码也会按照 Firefox 的要求一次又一次地运行。但是,在 IE 中,代码只运行一次。在此之后,即使单击加号/减号按钮 n 次,代码也不会再次运行。是不是 IE 有问题?
    猜你喜欢
    • 2016-08-28
    • 2010-11-27
    • 2017-02-18
    • 2016-03-25
    • 2017-02-22
    • 1970-01-01
    • 2018-08-29
    • 2011-11-09
    • 2018-09-19
    相关资源
    最近更新 更多