我有一个由按钮点击触发的ajax调用,但即使一切看起来都很好,它有时会停止工作。错误是500内部服务器,这是相当广泛的,所以我试图寻找我的功能内部的错误,但到目前为止没有运气。代码有什么问题吗?
这是我的AJAX电话:
jQuery(document).ready( function($){
$('.modal-footer').on('click', '#tempsave_submit', function() {
//Loads all the variables to be sent
var source = $("#source-save").text();
var name = $("input[id='pname-save']").val();
var stage = $("input[id='pstage-save']").val();
//Checks to see if any of those variables are empty
if (source == null || name == null || stage == null)
{$("#failstat").text("Error Reference Number: 300");
$("#failsave").slideDown(100).delay(2000).slideUp(100);
}
//If they are all valid, it calls the ajax function
else{
$.ajax({
url: 'https://website.com/tempsave',
type: 'POST',
data: {
source_save: source,
pname_save: name,
pstage_save: stage
},
dataType : 'html',
timeout: 30000,
cache: false,
success: function () {
$("#successsave").slideDown(100).delay(2000).slideUp(100);
},
error: function (jqXHR, exception) {
$("#failstat").text("Error Reference Number: 343-" + jqXHR.status + exception);
$("#failsave").slideDown(100).delay(2000).slideUp(100);
}
});
}
});
});
这里是目标php:
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$source = $_POST["source_save"];
$name = temp_input_check($_POST["pname_save"]);
$description = temp_input_check($_POST["pstage_save"]);
// tempsave_write() is a predefined function-no issues with this part
$fid = tempsave_write($source, $name);
// tempsave_save() is a predefined function-no issues with this part
$query = tempsave_save($name , $description , $fid);
}else{
$html = '
<h2>No Projects Were Found!</h2>
</div>
<p>Start by creating a new project. Your projects will be displayed here
once you submit them.</p>';
return $html;
}
我检查了响应,当它给我500内部错误时,它是从&#39; else&#39;返回的html。这意味着服务器首先没有以POST方式发送它。那可能吗。 @Taplan帮助了我,我们发现这个方法是GET!这怎么可能?
更新 我不得不更改我的HTML代码的某些部分(没有触及与ajax调用相关的代码),现在ajax只通过GET方法发送它,因此,给出500错误。正在发送的参数之一是html源代码,它已被更改,现在它作为GET发送。我试图缩小范围,发现参数甚至不能作为GET使用,即使页面显示它们是作为GET发送的。现在我确定问题是由于html源代码被发送但不知道它有什么问题。有什么帮助吗?
答案 0 :(得分:0)
我唯一看错的是使用&#34;输入&#34;在你的ajax调用块而不是&#34;方法&#34;。见这里:http://api.jquery.com/jquery.ajax/
您的代码应如下所示:
$.ajax({
url: 'https://website.com/tempsave',
method: 'POST',
data: {
source_save: source,
pname_save: name,
pstage_save: stage
},
dataType : 'html',
timeout: 30000,
cache: false,
success: function (response) {
$("#successsave").slideDown(100).delay(2000).slideUp(100);
},
error: function (jqXHR, exception) {
$("#failstat").text("Error Reference Number: 343-" + jqXHR.status + exception);
$("#failsave").slideDown(100).delay(2000).slideUp(100);
}
});