使用$ Location获取用户URL并放在SQL数据库中?

时间:2015-07-07 18:25:39

标签: javascript c# sql angularjs

所以我有一个最终用户,他们正在全局div上提交一个表单,并带有一个打开弹出窗口的按钮。

长话短说,他们填写此表单并使用Angular RESTing方法提交HTTP方法。

我正在试图弄清楚如何从用户访问弹出窗口中获取用户当前的URL,或者从中提交。

我想将该URL放在SQL数据库中,以了解用户在哪里发现错误或从哪里点击此按钮(弹出窗口的目的是获取信息并收到反馈)

正确的方法是什么?

$windows.location? 
$Location? 
$routeparams? 

我真的需要一些帮助。我将在下面发布我的客户端角度,接收这些请求并将其放入SQL数据库的后端由我的C#Controller完成。

(function() {
'use strict';

var commonModule = angular.module('ambassadors.commonModule');

commonModule.service('commonService', ['$http', '$q', function($http, $q) {

    this.getSettingsView = function() {

        var deferred = $q.defer();

        $http.get('/api/settings')
            .success(function(response) {
                deferred.resolve(response);
            })
            .error(function() {
                deferred.reject();
            });

        return deferred.promise;
    };

    this.getUserClaims = function() {
        var deferred = $q.defer();

        $http.get('/api/profile')
            .success(function(response) {
                deferred.resolve(response);
            })
            .error(function(response) {
                deferred.reject(response);
            });

        return deferred.promise;
    };

    this.submitFeedback = function(feedback, file) {
        var deferred = $q.defer();

        if (file != null) {
            var that = this;
            this.uploadFile(file).then(
                // Success Handler 
                function(result) {
                    // update the scec icon in the controller 
                    feedback.FeedbackUpload = result[0].location;
                    that.postFeedback(feedback, deferred);
                },
                // Failure Handler 
                function() {
                    $scope.messageInfo = "Error uploading feedback file";
                    return deferred.reject;
                });
        } else
            this.postFeedback(feedback, deferred);

        return deferred.promise;
    };

    this.postFeedback = function(feedback, deferred) {

        $http.post('/api/feedback', feedback)
            .success(function() {
                deferred.resolve();
            })
            .error(function() {
                deferred.reject();
            });
    }


    this.uploadFile = function(file) {

        // As per stackoverflow.com/questions/… 
        // uncorkedstudios.com/blog/… 

        var feedbackFileFormData = new FormData();
        feedbackFileFormData.append("file", file);

        var deferred = $q.defer();

        $http.post('/api/feedbackfile', feedbackFileFormData, {
                withCredentials: true,
                headers: {
                    'Content-Type': undefined
                },
                transformRequest: angular.identity
            })
            .success(function(response) {
                deferred.resolve(response);
            })
            .error(function() {
                deferred.reject();
            });

        return deferred.promise;
    };
 }]);
})();

1 个答案:

答案 0 :(得分:1)

在控制器中注入$location服务,然后使用

  

$ location服务解析浏览器地址栏中的URL(基于   在window.location上)并使URL可用于您的   应用。地址栏中URL的更改将反映到   $ location服务和$ location的更改都会反映到   浏览器地址栏。

var absUrl = $location.absUrl();
// => "http://example.com/#/some/path?foo=bar&baz=xoxo"