Javascript 防止表单提交后重定向到php文件

Javascript 防止表单提交后重定向到php文件,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,在研究了这么多小时后,我终于决定自己发布这个问题,因为什么对别人有效,对我似乎不起作用。请记住,我对ajax和jquery是相当陌生的,但是由于我目前的项目已经到了最后期限,所以我没有时间来完成所有的工作 我有以下html表单: <div class="form"> <form id="savePlacemarkForm" method="post" action="createPlacemark.php"> <div>

在研究了这么多小时后,我终于决定自己发布这个问题,因为什么对别人有效,对我似乎不起作用。请记住,我对ajax和jquery是相当陌生的,但是由于我目前的项目已经到了最后期限,所以我没有时间来完成所有的工作

我有以下html表单:

<div class="form">
    <form id="savePlacemarkForm" method="post" action="createPlacemark.php">
        <div>
            <input type="text" id="placemarkName" name="placemarkName" placeholder="Name:"/>
        </div>
        <div>
            <input type="text" id="placemarkAddress" name="placemarkAddress" placeholder="Adress:"/>
        </div>
        <div>
            <input type="text" id="placemarkTag" name="placemarkTag" placeholder="Tags:"/>
        </div>
        <div>
            <textarea id="placemarkDescription" name="placemarkDescription" placeholder="Description" rows="1" cols="1"></textarea>
        </div>
        <div>
            <input id="latitude" type="text" name="latitude"/>
        </div>
        <div>
            <input id="longtitude" type="text" name="longtitude"/>
        </div>
        <button class="md-close" id="savePlacemark" onclick="createPlacemark();"/>Save</button>
    </form>
    <button class="md-close">Cancel</button>
    <script src="my_script.js" type="text/javascript"></script>
</div>
正如你所看到的,这篇文章对我来说是有效的,但由于某种原因,返回值是错误的;似乎对我不起作用,因为我一直被重定向到前面提到的php文件


任何帮助都将不胜感激!谢谢

试试下面的方法。
.submit()
函数实际上会触发表单的提交。将其从脚本中删除,因为当您已使用
$发布值时不需要它。post

$("#savePlacemark").click( function() {
 $.post( $("#savePlacemarkForm").attr("action"), 
         $("#savePlacemarkForm :input").serializeArray();                    
  });
  clearInput();
});

function clearInput() {
    $("#savePlacemarkForm :input").each( function() {
       $(this).val('');
    });
}   

尝试以下方法。
.submit()
函数实际上会触发表单的提交。将其从脚本中删除,因为当您已使用
$发布值时不需要它。post

$("#savePlacemark").click( function() {
 $.post( $("#savePlacemarkForm").attr("action"), 
         $("#savePlacemarkForm :input").serializeArray();                    
  });
  clearInput();
});

function clearInput() {
    $("#savePlacemarkForm :input").each( function() {
       $(this).val('');
    });
}   
试试这个

<button onclick="return createPlacemark();">Save</button>
保存
它可能对你有帮助。

试试这个

<button onclick="return createPlacemark();">Save</button>
保存

它可能会对您有所帮助。

暂且不说,您的
clearInput()
函数中不需要
each()
函数。只需编写:
$('#savePlacemarkForm:input').val('')在开始处理AJAX请求时尝试
返回json\u encode($\u POST)
,然后查看Chrome Developer Tools中的网络选项卡。它将显示您的脚本在请求中接收到的内容,这将帮助您确定问题。对不起,我应该在哪里编写json_encode($\u POST)?只需简短地说一下,您的
clearInput()
函数中不需要
each()
函数。只需编写:
$('#savePlacemarkForm:input').val('')在开始处理AJAX请求时尝试
返回json\u encode($\u POST)
,然后查看Chrome Developer Tools中的网络选项卡。它将显示您的脚本在请求中收到的内容,这将帮助您确定问题。对不起,我到底在哪里编写json_编码($_POST)?同样的问题。当您删除此代码时,您将删除返回false,这(我在其他地方可以看到)应该是阻止重定向的原因。
createPlacemark()?因为页面上没有任何东西可以触发重定向。createPlacemark.php从表单中获取所有值并将它们保存在我的数据库中,这是正确的!因此,除了触发重定向之外的所有东西都可以工作。我指的是javascript函数。您有一个
onclick=“createPlacemark();”
以及该按钮上的单击事件。哦,是的,createPlacemark会更新UI,基本上它会在我的地图上您正在查看的位置放置一个placemark。。。然而,它不会改变任何东西,无论它是否存在……同样的问题。当您删除此代码时,您将删除返回false,这(我在其他地方可以看到)应该是阻止重定向的原因。
createPlacemark()?因为页面上没有任何东西可以触发重定向。createPlacemark.php从表单中获取所有值并将它们保存在我的数据库中,这是正确的!因此,除了触发重定向之外的所有东西都可以工作。我指的是javascript函数。您有一个
onclick=“createPlacemark();”
以及该按钮上的单击事件。哦,是的,createPlacemark会更新UI,基本上它会在我的地图上您正在查看的位置放置一个placemark。。。然而,无论它是否存在,它都不会改变任何事情。。。