Ajax接到电话不能正常工作

时间:2014-05-05 08:30:29

标签: jquery ajax backbone.js

我有以下类型的网址

  http://11.11.11.11/url/index.php?data={method:method_name,params:{param1:value,param2:value,}}

我希望将数据从骨干视图传递到具有以下结构类型的ajax类

define(['jquery', 'backbone'],
function($, Backbone) {
    var ajax = {
        getDataCall: function(url, data, successCallBack, failureCallBack) {
            var that = this;
            //console.log(method);
            //console.log(successCallBack);
            that.showLoading();
            $.ajax({
                url: url,
                method: 'get',
                data: data,
                // contentType:"application/json; charset=utf-8",
                success: function(data) {
                    that.hideLoading();
                    //alert("success ajax");
                    successCallBack(data);
                },
                fail: function(data) {
                    that.hideLoading();
                    failureCallBack(data);
                }
            });
        },
        showLoading: function() {
            $.blockUI();
            //$.blockUI({ message: '<img src="img/ajax-loader.gif" />' })
        },
        hideLoading: function() {
            $.unblockUI();
        }
    };
    return ajax;
});

从骨干视图我打电话

var dataToSend={"method":"method","params":{"param2":"param2"}}  

ajax.getDataCall("http://11.11.11.11/url/index.php?",dataToSend,successCallBack,failureCallback)

但它没有变成正确的网址。这段代码有什么问题?

1 个答案:

答案 0 :(得分:1)

这是一个有趣的设置。我之前从未在URL中看到过JSON格式。但是,基本上jQuery在data属性中获取一个对象文字,并在默认的contentType上对其进行序列化。

无论如何,解决方案是您需要1)对对象进行字符串化,2)取走引号,并且3)将“data =”放在那里:

var dataToSend={"method":"method","params":{"param2":"param2"}};
dataToSend = 'data=' + JSON.stringify( dataToSend ).replace(/\"/g, '');

ajax.getDataCall("http://11.11.11.11/url/index.php?",dataToSend,successCallBack,failureCallback)