2015-02-09 3 views
6

मेरे पास एमवीसी 5 लेआउट पेज में खोज के निर्देश के साथ मूल निर्देश है। मेरी समस्या यह है कि टेम्पलेट यूआरएल लोड नहीं किया जा सकता (400 त्रुटि)। यदि मैं सीधे ब्राउज़र में यूआरएल दर्ज करता हूं, तो मैं बिना कठिनाई या त्रुटि के HTML पृष्ठ लोड कर सकता हूं। मुझे पता नहीं चल रहा है कि पेज लोड करने के लिए AJAX कॉल क्यों विफल रहा है।एंगुलरजेएस डायरेक्टिव टेम्पलेट यूआरएल 400 लौटाता है हालांकि फ़ाइल यूआरएल लोड

क्रोम डिबगर Chrome debugger

यह क्रोम में HTML पृष्ठ लोड हो रहा है

Page loads

app.js

(function() { 
    var app = angular.module("mainApp"); 

    app.directive("basicSearch", function() { 
     return { 
      templateUrl: 'app/directives/basic-search.html', 
      controller: function($scope, search) { 
       $scope.keyword = ''; 
       $scope.exact = false; 
       $scope.submitSearch = function() { 
        search.searchByKeyword($scope.keyword, 0, $scope.exact); 
       } 
      } 
     } 
    }); 
}()); 
है

बुनियादी search.html

<div> 
    <input type="search" ng-model="keyword" name="keyword" /> 
    <button type="submit" ng-click="submitSearch()"></button> 
    <input type="checkbox"ng-model="exact" name="exact" /> 
    <label for="exact">Exact Match?</label> 
</div> 

_Layout.cshtml

<html> 
    <head> 
    <base href="@Request.ApplicationPath" /> 
    <!--- JS & CS References --> 
    <title></title> 
    </head> 
    <body ng-app="mainApp"> 
    <!-- Other stuff --> 
    <basic-search></basic-search> 
    <!-- More other stuff --> 
    @RenderBody() 
    </body> 
</html> 

संपादित यहाँ सफल अनुरोध (ब्राउज़र के माध्यम से) है: Good Request

और यहाँ है वह जो विफल रहता है (कोणीय निर्देश के माध्यम से): Bad Request

+0

दोनों मामलों में हेडर की तुलना करें, शायद एक अंतर है। – dfsq

+0

टेम्पलेट एक स्थिर फ़ोल्डर में सेवा करने के लिए है? यदि आप अपने ब्राउज़र कोणीय में यूआरएल द्वारा सादे टेम्पलेट तक नहीं पहुंच सकते हैं तो भी नहीं .... –

+0

मैं इसे एक्सेस कर सकता हूं। ** यूआरएल लोड ** अनुभाग देखें। –

उत्तर

3

मैंने इसे हल किया। ऐसा लगता है किसी को एक (आश्चर्य आश्चर्य,) एक IE बग को हल करने की कोशिश के रूप मॉड्यूल config के लिए निम्नलिखित कहा:

//initialize get if not there 
if (!$httpProvider.defaults.headers.get) { 
    $httpProvider.defaults.headers.get = {}; 
} 

//disable IE ajax request caching 
$httpProvider.defaults.headers.get["If-Modified-Since"] = "0"; 

मैं इसे हटा दिया, अपने कैश को हटा दिया, और यह ठीक काम कर रहा है।

3

आईई बग जो क्रिस का जिक्र कर रहा है वह एक कैशिंग त्रुटि है जो कोणीय के $ http और IE का उपयोग करते समय पुरानी सामग्री को फिर से सेवा करने की अनुमति देती है। http://benjii.me/2014/07/ie-is-caching-my-angular-requests-to-asp-net-mvc/

बग फिक्स कोड को हटाने की तुलना में एक बेहतर ठीक इसे ठीक करने के लिए है:

मैं विषय के बारे में यहाँ लिखा है। इसके बजाए निम्नलिखित का प्रयोग करें:

//initialize get if not there 
if (!$httpProvider.defaults.headers.get) { 
    $httpProvider.defaults.headers.get = {}; 
} 

//disable IE ajax request caching 
$httpProvider.defaults.headers.get["If-Modified-Since"] = "Fri, 01 Jan 2010 00:00:00 GMT"; 
संबंधित मुद्दे