【发布时间】:2014-12-04 18:48:52
【问题描述】:
我目前正在创建一个向应用程序发出 POST 请求的函数。我的 JSON 字符串设置正确,但是当我使用调试器并监视网络活动时,我从未看到从浏览器发送任何请求。这是我的代码的细分。我不得不做一些诡计,因为这是一个 PoC 代码,它最初处理的是一个 jsp 页面。
$(document).ready(function() {
$("#myForm").submit(function(e) {
e.preventDefault();
var myJsonObject = new Object();
//set up my object and stringify it into myString
sendDataToServer(myString);
});
function sendDataToServer(jsonString) {
$.ajax({
type: "POST",
data: jsonString,
contentType: "application/json; charset=utf-8",
url: "https://my.target.server.com"
dataType : 'json',
processdata: true,
success: eval("successMessage"),
error: eval("failureMessage")
});
}
function successMessage() {
alert("Post was successful");
}
function failureMessage() {
alert("Post failed");
}
});
现在,我的 ajax 调用失败(仍在处理凭据问题和证书),但我什至看不到从一开始就发送任何请求。我的ajax调用是错误的,还是有其他问题?如果我因证书问题而被拒绝访问服务器,在发送任何请求之前尝试建立与服务器的连接时会失败吗?
对于一些额外的信息,我在提交表单时确实看到了 failureMessage() 警报,所以我知道它至少在调用 ajax 函数。
【问题讨论】:
-
eval 是邪恶的。 不要在这种情况下使用 eval。使用闭包。
-
@LorenzMeyer 抱歉,对 AJAX 调用非常陌生。我查了闭包,它只是在成功参数中定义函数吗?
-
对。只需调用该函数。不要评估它。