2014-11-06 70 views
1

我一直在试图找出如何寻找帮助,我确信有很多信息,但我不知道要搜索什么。我正在使用Visual Studio 2013的apache-cordova插件。我正在使用AngularJS创建一个应用程序。我需要对我的MVC 5项目进行Ajax调用。我可以在不使用身份验证的情况下进行GET调用,但我不能允许匿名POST调用。我会在自己的Ajax中包含自定义标头吗?这是我的第一个移动应用程序,所以我不确定这是如何工作的。 这里是我想提出我的GET调用如何从移动应用程序向web api控制器发送邮件

app.factory('ItemGet', function ($http, $q) { 
return { 
    query: function() { 
     var deferred = $q.defer(); 
     $http({ method: 'get', url: 'http://example.com/api/apiItem' }) 
       .success(function (data) { 
        deferred.resolve(data); 
       }).error(function (error) { 
        deferred.reject(error); 
       }); 
     return deferred.promise; 
    } 
    } 
}); 

更新

//Post New Job 


    $scope.submitJob = function() { 
    var data = { 
     username: $scope.loginForm.username, 
     password: $scope.loginForm.password, 
     JobId: $scope.JobId, 
     JobNumber: $scope.currentItem.JobNumber, 
     JobName: $scope.currentItem.JobName, 

     } 
    var json = JSON.stringify(data); 
    $http.post('http://example.com/api/apiJob/PostNewJob', json, {headers: {'Accept': 'application/json', 'Content-Type': 'application/json'}}) 
    .success(function(data, status) { 
     // success code 
    }) 
    .error(function(data, status) { 
     // error code 
    }); 
}; 

错误 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4400' is therefore not allowed access.

我已经启用了在服务器端

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.EnableCors(); 

我做了一些一个Cors搜索,但我不知道究竟是什么做的。

我发现了一个临时解决方案,我想?

<system.webServer> 
<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="http://localhost:4400" /> 
    </customHeaders> 
    </httpProtocol> 

我的控制台如何显示我的服务器的登录页面。这是什么意思?

<h2>Log in.</h2> 
<div class="row"> 
<div class="col-md-8"> 
    <section id="loginForm"> 
    <form action="/Account/Login?ReturnUrl=%2Fapi%2FapiJob" class="form-horizontal" method="post" role="form"><input name="__RequestVerificationToken" type="hidden" value="akPAxvS8E2QJHtxFuSnHnFzdSE1Rs1HQExTcNIofMwCKIEZ6NZowUfO2SJZhAAPhxbK178KDOug9g0Y0Sn6_obTvM9cHj77b70btqRfHgwg1" />    <h4>Use a local account to log in.</h4> 
      <hr /> 
      <div class="form-group"> 
       <label class="col-md-2 control-label" for="Email">Email</label> 
       <div class="col-md-10"> 
        <input class="form-control" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" type="text" value="" /> 
        <span class="field-validation-valid text-danger" data-valmsg-for="Email" data-valmsg-replace="true"></span> 
       </div> 
      </div> 
      <div class="form-group"> 
       <label class="col-md-2 control-label" for="Password">Password</label> 
       <div class="col-md-10"> 
        <input class="form-control" data-val="true" data-val-required="The Password field is required." id="Password" name="Password" type="password" /> 
        <span class="field-validation-valid text-danger" data-valmsg-for="Password" data-valmsg-replace="true"></span> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-md-offset-2 col-md-10"> 
        <div class="checkbox"> 
         <input data-val="true" data-val-required="The Remember me? field is required." id="RememberMe" name="RememberMe" type="checkbox" value="true" /><input name="RememberMe" type="hidden" value="false" /> 
         <label for="RememberMe">Remember me?</label> 
        </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-md-offset-2 col-md-10"> 
        <input type="submit" value="Log in" class="btn btn-default" /> 
       </div> 
      </div> 
      <p> 
       <a href="/Account/Register">Register as a new user</a> 
      </p> 
     </form>  </section> 
    </div> 

回答

1

我不是为你的问题是什么十分清楚,我只是认为你是问如何让阿贾克斯后用头。以下是语法:

 // username and password is the payload your server accepts as poat data 
     //$scope.loginform.username and $scope.loginform.password is your model name of your fields in angular 
     //Iam converting it to payload format that will be accepted by the server 
     var data = {username: $scope.loginForm.username, password: $scope.loginForm.password}; 
     var json = JSON.stringify(data); 
    // json is the json data you need to post 

     $http.post('http://example.com/api/apiItem', json, {headers: {'Accept': 'application/json', 'Content-Type': 'application/json'}}) 
       .success(function(data, status) { 
        // success code 
       }) 
       .error(function(data, status) { 
        // error code 
        }); 
       }); 

以下是json数据Iam发布到服务器的结构。此结构可能会根据您的服务器接受的有效负载而发生变化

 {"username":"john", "password":"max"} 
+0

但是,如何登录以发布该帖子。我的web api控制器中的发布操作具有授权属性。所以一些在阿贾克斯呼叫我需要发送我的用户名和密码 – texas697 2014-11-07 05:41:02

+0

请找到我更新的答案。这是你想知道的吗? – ShinyJos 2014-11-07 05:48:59

+0

它看起来像。将在早上检查出来。谢谢 – texas697 2014-11-07 05:56:08

相关问题