Ajax的数据参数没有进入服务器

时间:2015-03-25 07:13:52

标签: javascript jquery ajax

好的,这是我的问题。

我有一个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请求是成功的,有时它不是

由于

2 个答案:

答案 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(){

        });