jQuery.post使用当前位置的修改url而不是提供的url

时间:2014-04-22 17:46:12

标签: javascript jquery

我的jquery.post调用有问题。

当我执行以下脚本时:

<script type="text/javascript">
    $(document).ready(function(){
        //var cmsr_url = 'http://127.0.0.1/sphere/modules/cmsrating/ajax.php?rand=1231';
        var cmsr_url = 'ajax/test.html';

        $('.star, .auto-submit-star').rating({
            callback: function(value, link){
                alert(cmsr_url);
                $.post({
                    url: cmsr_url,
                    // also tried to put here a string like below
                    // url: 'http://127.0.0.1/sphere/modules/cmsrating/ajax.php?rand=1231'
                    data: {rating : value},
                    success: function(){
                        alert('done!');
                    },
                    dataType: 'json'
                });
            } 

        });

    });
</script>

我的提醒显示正确的网址。但是我的萤火虫显示请求的网址是:

http://127.0.0.1/sphere/pl/content/%5Bobject%20Object%5D

它从何而来?

3 个答案:

答案 0 :(得分:3)

我认为问题在于您正在尝试使用$ .post函数,就像使用$ .ajax函数一样。从文档来看,post看起来不接受$ .ajax这样的选项。 https://api.jquery.com/jQuery.post/

试试这个:

$.ajax({
    url: cmsr_url,
    // also tried to put here a string like below
    // url: 'http://127.0.0.1/sphere/modules/cmsrating/ajax.php?rand=1231'
    data: {rating : value},
    success: function(){
     alert('done!');
    },
    dataType: 'json',
    type: 'POST'
});

答案 1 :(得分:0)

url: cmsr_url.toString(),

在你的情况下http://127.0.0.1/sphere/pl/content/%5Bobject%20Object%5D 意味着cmsr_url是对象,而不是字符串,可能它可以被强制转换为字符串

答案 2 :(得分:0)

看起来你正在传递Object,预计会有String。您网址的末尾是[object Object]的网址编码版本,这是在普通对象上调用toString()时返回的内容。

<德尔> 检查传入回调的`value`的值是字符串而不是对象。 - 编辑 - 你是通过连接字符串构建`cmsr_url`吗?确保所有部件都是字符串,而不是普通对象。

- 编辑 -

正如@ MyP3uK在他的正确答案中指出的那样,这是因为您将选项对象传递给$.post,其中只需要一个字符串网址。