好的,这是我的问题。
我有一个html页面,其中初始化了一个javascript变量。
<html>
<script>
MyVaribale = "Random Data";
</script>
<!-- Then I include an external js file to handle the processes in this html file -->
<script type="text/javascript" language="javascript" src="/scripts/some_random_script.js"></script>
</html>
现在,在那个脚本里面。我在其中一个ajax请求中使用了MyVaribale
varible,如下所示:
$(document).ready(function() {
$.ajax(
url : '/some/random/url',
data : { MyVariable : MyVaribale }
etc ...
);
});
因此,在页面加载时,会立即执行ajax代码。
在上面指定的网址中,我检查了MyVaribale
是否存在,然后标记一个错误,如果它不存在,则为必填值。
这样的后端代码(在Perl中):
my $MyVariable = trim_param('MyVariable'); # trim_param() is a function that gets the passed data from ajax.
if ( $MyVariable ) { # Test if it exists
# Display something
}
else {
# Flag an error, which is my problem
}
现在我确信在html页面中,该变量总是被填充(是100%肯定)。但我总是得到标记错误,该值在我的后端不存在代码(上面的url)。
那么问题,
ajax是否与document.ready
存在问题,可能是在变量分配完值之前执行的?知道为什么会这样吗?因为有时我的ajax请求是成功的,有时它不是
由于
答案 0 :(得分:1)
您的ajax调用的语法不正确。看看here,然后尝试使用此代码(请注意添加{
,}
和,
):
MyVaribale = "Random Data";
$(document).ready(function() {
$.ajax({
url: '/some/random/url',
data : { myVariable : MyVaribale }
});
});
答案 1 :(得分:0)
你没试过一些完整的ajax电话吗?像这样。有时候不需要为MyVariable使用JSON.stringify。
$.ajax({
url: "/some/random/url",
type: 'POST',
dataType: 'json',
data: JSON.stringify(MyVaribale),
contentType: 'application/json',
mimeType: 'application/json'
}).done(function(data) {
}).fail(function(error) {
}).always(function(){
});