小编Che*_*hev的帖子

即使正确设置了document.domain,跨子域ajax请求也被拒绝

在我的应用程序中,我在一个子域(dev.u413.com)上有一个网站,我使用jQuery向另一个子域(api.u413.com)上的JSON api发出ajax请求.当我检查Chrome开发工具和Firefox Firebug中的请求时,我的请求似乎被阻止了Access-Control-Allowed-Origin.我设置document.domain为当前域的后缀:document.domain = 'u413.com';.

这是我的要求:

    $.ajax({
        dataType: 'json',
        data: { parseAsHtml: true, cli: 'help' },
        url: 'http://api.u413.com/',
        success: function (response) {
            alert(response.Command);
        }
    });
Run Code Online (Sandbox Code Playgroud)

如果我将ajax请求修改为在同一个域上,则请求成功.

    $.ajax({
        dataType: 'json',
        crossDomain: false,
        data: { parseAsHtml: true, cli: 'help' },
        url: 'http://dev.u413.com/',
        success: function (response) {
            alert(response.Command);
        }
    });
Run Code Online (Sandbox Code Playgroud)

为什么会这样?浏览器不应该抱怨跨域问题,因为我document.domain根据相同原始策略的指南设置了两个子域的公共后缀.

我目前正在使用jsonp的应用程序,但我觉得正确的ajax请求应该按照我上面链接的相同原始策略工作.如果我不需要,我宁愿不使用jsonp.是否无法跨子域定期发出ajax请求?

javascript jquery json jsonp cross-domain

16
推荐指数
2
解决办法
2万
查看次数

如何在不显式创建类的情况下创建临时对象来传递?

我经常发现自己需要创建一个类作为一些数据的容器.它只是简单地使用,但我仍然需要创建类.像这样:

public class TempObject
{
    public string LoggedInUsername { get; set; }
    public CustomObject SomeCustomObject { get; set; }
    public DateTime LastLoggedIn { get; set; }
}


public void DoSomething()
{
    TempObject temp = new TempObject
    {
        LoggedInUsername = "test",
        SomeCustomObject = //blah blah blah,
        LastLoggedIn = DateTime.Now
    };
    DoSomethingElse(temp);
}

public void DoSomethingElse(TempObject temp)
{
    // etc...
}
Run Code Online (Sandbox Code Playgroud)

通常我的临时对象具有更多属性,这就是我想首先将它们分组的原因.我希望有一种更简单的方法,例如匿名类型.问题是,当我将它传递给另一种方法时,我不知道该接受什么.这种类型是匿名的,所以我怎么能在另一方接受呢?

public void DoSomething()
{
    var temp = new
    {
        LoggedInUsername = "test",
        SomeCustomObject = //blah blah,
        LastLoggedIn = DateTime.Now
    }; …
Run Code Online (Sandbox Code Playgroud)

.net c# oop object anonymous-types

15
推荐指数
2
解决办法
2万
查看次数

使用jQuery的.on函数如何获取事件的原始元素?

我有这样的代码:

$('.remove-group').click(function () {
    $(this).closest('tr').remove();
});
Run Code Online (Sandbox Code Playgroud)

这工作正常,直到我需要使用委托事件处理程序来捕获将来将添加到页面的元素的点击.

$(document).on('click', '.remove-group', function () {
    $(this).closest('tr').remove();
});
Run Code Online (Sandbox Code Playgroud)

这不再有效,因为this关键字不引用原始元素.

有任何想法吗?

更新

似乎在我努力简化我的问题的代码我实际上使它工作.我实际上是在传递一个包装的集合,该集合被分配给变量而不是字符串选择器.

var $removeGroup = $('.remove-group');
$(document).on('click', $removeGroup, function () {
    $(this).closest('tr').remove();
});
Run Code Online (Sandbox Code Playgroud)

当我这样做时,这似乎不起作用.

html javascript jquery events

14
推荐指数
2
解决办法
8801
查看次数

您应该为Interfaces,具体实现或两者编写XML注释吗?

标题基本概括了所有内容.我在哪里应用我的XML注释?我应该在界面中添加更通用的XML注释,并在实现类中添加更具描述性的注释吗?像这样:

public interface IObjectRepository
{
    /// <summary>
    ///    Returns an object from the respository that contains the specified ID.
    /// </summary>
    Object GetObject(int Id);
}

public ObjectRepository : IObjectRepository
{
    /// <summary>
    ///    Retrieves an object from the database that contains the specified ID.
    /// </summary>
    public Object GetObject(int Id)
    {
        Object myData = // Get from DB code.
        return myData;
    }
}
Run Code Online (Sandbox Code Playgroud)

<param>为简单起见,我没有包括在内.

这是一个很好的评论做法还是有不同的方式?我是否只是跳过评论界面?任何帮助表示赞赏.

c# documentation comments interface xml-comments

13
推荐指数
1
解决办法
4334
查看次数

在C#控制台应用程序中编辑文本?

有没有办法在C#控制台应用程序中编辑文本?换句话说,是否可以在命令行上放置预定义的文本,以便用户可以修改文本然后将其重新提交给应用程序?

.net c# console command-line console-application

13
推荐指数
2
解决办法
8301
查看次数

无法在我的Node.js应用中读取我的环境变量

我在Ubuntu 12.04上,我只是在学习环境变量.我试图从我的应用程序中读取自定义变量,但它总是显示为undefined.这是我的测试应用程序的代码:

// app.js

console.log('Value: ' + process.env.NODE_ENV);
Run Code Online (Sandbox Code Playgroud)

如果我运行以下命令,您将看到该变量具有值:

$ NODE_ENV=production
$ echo $NODE_ENV
production
Run Code Online (Sandbox Code Playgroud)

我可以echo $NODE_ENV整天和它继续向我展示"生产",但是当我process.env.NODE_ENV在我的Node应用程序中它总是显示"未定义".

$ node app.js
Value: undefined
Run Code Online (Sandbox Code Playgroud)

这里有一个奇怪的部分,如果我显示另一个我知道已经存在的环境变量,比如说process.env.PATH它可以工作.

$ node app.js
Value: /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)

另一个怪癖是该命令printenv list似乎不包含我的自定义变量,NODE_ENV尽管这echo $NODE_ENV显示了正确的值.printenv NODE_ENV没有显示任何内容,但printenv PATH显示正确的值,就像我PATH在节点应用程序中访问时一样.

bash terminal ubuntu environment-variables node.js

13
推荐指数
2
解决办法
1万
查看次数

我应该如何为应用程序实现OAuth?

我正在为需要执行以下操作的客户端创建应用程序:

  • 允许用户使用Google,Facebook,Twitter和LinkedIn进行身份验证.
  • 注册后,允许用户添加其他提供商.(即如果用户通过Google验证,那么他们也应该能够添加任何或所有其他提供商.)
  • 允许用户导入Google联系人,Facebook好友列表,Twitter粉丝和Linkedin好友,以构建自定义联系人列表.

哪个地方最适合开始学习这个?是否有一个标准,每个人都在.NET中使用这些东西?我一直在谷歌搜索几个小时,虽然似乎大多数人指向DotNetOpenAuth我似乎找不到任何关于如何使用该库的实用教程.下载附带样本,但它仍然让我感到困惑.

我以为它会像下面这样简单:

  • 配置提供商的秘密.
  • 开始使用提供商登录
  • 使用auth cookie对用户进行身份验证
  • 在我的数据库中创建用户记录并从提供者存储唯一ID.

但似乎每个提供商都有自己的代码集,而且它们都是如此不同而且令人困惑.Facebook有一些图形对象,twitter有一些我不理解的"InMemoryTokenManager",而Google甚至没有一个身份验证示例,只有Google地址簿示例.最重要的是,您必须将样本中的一些ApplicationBlock演示中的一些代码复制到您自己的应用程序中,出于某种原因,并且在不知道它正在尝试做什么的情况下将所有内容编译成一个艰巨的任务.

我觉得我错过了所有这些基本的东西.

在这一点上,即使书籍推荐也会很棒.

我相信我理解OAuth的高级概念,但是一旦我试图深入了解细节,我立即迷失了.

c# asp.net asp.net-mvc oauth oauth-2.0

13
推荐指数
1
解决办法
2万
查看次数

JQuery UI可调整大小不支持position:fixed; 有什么建议?

JQuery UI的.resizable功能不支持position: fixed;元素.当您尝试调整它们的大小时,它会将其position属性切换为绝对属性.任何推荐的修复?

我有一些弹出的聊天窗口,可以在文档周围拖动.它们的位置是固定的,因此它们不会随着它们后面的页面滚动.它们都可以完美地工作,直到您尝试调整窗口大小,当它转换到窗口时position: absolute;,然后在页面滚动时将其留下.

我尝试处理resize stop事件并将位置更改为fixed:

    stop: function (event, ui)
    {
        $(chatWindow).css('position', 'fixed');
    }
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为定位(top:left:)对于固定元素不正确,并且当您停止调整元素大小时,切换到固定定位并跳转到页面上的奇怪位置.有时跳出页面边界并永远丢失.

有什么建议?

javascript jquery jquery-ui draggable resizable

12
推荐指数
2
解决办法
1万
查看次数

在实体框架中映射片段的问题

我正在使用实体框架,我遇到了一个奇怪的构建错误.

我正在建立一个论坛,我在数据库中设置了一个"忽略"的表,当人们不喜欢彼此时会忽略某人.该表有两列,它们是主键.

PK InitiatingUser
PK IgnoredUser
Run Code Online (Sandbox Code Playgroud)

当EF映射此表时,我收到此错误:

错误7错误3034:从第1467行,第1477行开始映射片段时出现问题:具有可能不同键的两个实体映射到同一行.确保这两个映射片段将AssociationSet的两端映射到相应的列.

我在xml编辑器中打开了edmx并导航到有问题的行.

          <MappingFragment StoreEntitySet="Ignores">
            <ScalarProperty Name="IgnoredUser" ColumnName="IgnoredUser" />
            <ScalarProperty Name="InitiatingUser" ColumnName="InitiatingUser" />
          </MappingFragment>
Run Code Online (Sandbox Code Playgroud)

我刚刚开始使用EF,我不明白发生了什么或问题可能是什么.

任何帮助表示赞赏.

编辑 忽略之间的关系曾经有外键将启动用户和被忽略的用户映射到用户表的主键(用户名).这就是我第一次将EF映射到此表时的情况.我已经删除了FK,看看是否会有所帮助,但事实并非如此.

entity-relationship entity-framework entity-framework-4 entity-framework-designer

12
推荐指数
2
解决办法
1万
查看次数

编译器说我没有实现我的界面,但我是?

好的,我有两个名称空间.一个包含我的界面,一个包含实现类.像这样:

namespace Project.DataAccess.Interfaces
{
    public interface IAccount
    {
        string SomeMethod();
    }
}

namespace Project.DataAccess.Concrete
{
    class Account : Project.DataAccess.Interfaces.IAccount
    {
        string SomeMethod()
        {
            return "Test";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用此代码我收到一个错误:

'Project.DataAccess.Concrete.Account'没有实现接口成员'Project.DataAccess.Interfaces.IAccount.SomeMethod'.'Project.DataAccess.Concrete.Account.SomeMethod'无法实现接口成员,因为它不是公共的

如果我将类和方法公开,它就可以正常工作.但是,如果我改为使用接口名称限定方法名称,那么它也会修复它.为什么?例如:

namespace Project.DataAccess.Concrete
{
    class Account : Project.DataAccess.Interfaces.IAccount
    {
        string IAccount.SomeMethod()
        {
            return "Test";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么要修复它?如果我不这样做,为什么必须公开呢?

要清楚

我很清楚将其公之于众.使方法签名看起来像这样没有公开修改它:

string IAccount.SomeMethod()
Run Code Online (Sandbox Code Playgroud)

为什么?

.net c# inheritance interface

12
推荐指数
1
解决办法
1万
查看次数