Ajax's的数据参数未发送到服务器

Ajax's data parameter not making it to the server

本文关键字:服务器 参数 数据 Ajax      更新时间:2023-09-26

好的,这是我的问题。

我有一个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变量,如下所示:

$(document).ready(function() {
   $.ajax(
       url : '/some/random/url',
       data : { MyVariable : MyVaribale }
       etc ...
   );
});

因此,在页面加载时,ajax代码会立即执行。

在上面指定的url中,我检查了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请求是成功的,有时它不是

感谢

ajax调用的语法不正确。看看这里,然后尝试这个代码(注意添加了{},):

MyVaribale = "Random Data";
$(document).ready(function() {
    $.ajax({
       url: '/some/random/url',
       data : { myVariable : MyVaribale }
    });
});

您没有尝试过一些完整的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(){
        });