小编Zak*_*nry的帖子

使用ajax的Javascript回调函数

我正在编写一个通用函数,它将在我的脚本中的多个位置重用.

该函数使用ajax(使用jQuery库),所以我想以某种方式将一个函数(或代码行)传入此函数,以便在ajax完成时执行.我认为这需要一个回调函数,但在阅读了几个回调答案后,我仍然对我将如何实现我的情况感到困惑.

我目前的职能是:

function getNewENumber(parentENumber){

        $.ajax({
               type: "POST",
               url: "get_new_e_number.php",
               data: {project_number: projectNumber, parent_number: parentENumber},
               success: function(returnValue){
                    console.log(returnValue);
                    return returnValue; //with return value excecute code

                },
                error: function(request,error) {
                    alert('An error occurred attempting to get new e-number');
                    // console.log(request, error);
                }
        });
    }
Run Code Online (Sandbox Code Playgroud)

有了这个函数,我希望能够像其他jQuery函数一样工作,即;

var parentENumber = E1-3;

getNewENumber(parentENumber, function(){
    alert(//the number that is returned by getNewENumber);
});
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery callback

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

C++ - 如何从类的构造函数初始化单独类的构造函数?

基本上,我想实现的是创建类的地方(私人)实例deltaKinematics中的类geneticAlgorithm

geneticAlgorithm.h我有的文件中:

class DeltaKinematics; //class is defined in separate linked files

class GeneticAlgorithm {
  //private  
    DeltaKinematics deltaRobot;

public:

    GeneticAlgorithm(); //constructor

};
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但是当我去声明GeneticAlgorithm构造函数时,我无法弄清楚如何构造实例DeltaKinematics

这是geneticAlgorithm.cpp构造函数:

GeneticAlgorithm::GeneticAlgorithm(){ //The error given on this line is "constructor for 'GeneticAlgorithm' must explicitly initialize the member 'deltaRobot' which does not have a default constructor"

    DeltaKinematics deltaRobot(100); //this clearly isn't doing the trick

    cout << "Genetic Algorithmic search class initiated \n";
}
Run Code Online (Sandbox Code Playgroud)

如何初始化该本地实例?

c++ constructor initialization class

7
推荐指数
1
解决办法
7186
查看次数

jQuery:如何追加$(this)

我有一个jQuery方法,我想将元素$(this)追加到.

我的代码是

$("#actions ul" ).append($(this)); 
Run Code Online (Sandbox Code Playgroud)

然而,这似乎做了什么.使用线

.append($(this).html()) 
Run Code Online (Sandbox Code Playgroud)

确实有效,但它只抓住$(this)(div)的孩子而不是整个元素(li).

我可能正在做一些蠢货,希望有人能指出这一点.

jquery append jquery-selectors

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

长轮询超时问题

我正在做一个长轮询方法的聊天室.但似乎,当一个长的民意调查发生并且我刷新页面的铬或我尝试发送另一个异步请求一切都超时(即我不能再加载我的域,直到我关闭/重新打开浏览器).

我的客户端代码是:

 $(document).ready(function() {
    setTimeout(
      function () {
        longPollForMessages();
      },
      500
    );
  });

function longPollForMessages()
{
  $.ajax({
    url: url,
    dataType: 'json',
    success: function(data) {     
        $('#chat_messages').append('<div>'+data.messages+'</div>');

        longPollForMessages();
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

我的服务器端:

while(true) {
      $messages = $db->getMessages();

      if (!$messages || sizeof($messages)==0) {
        sleep(1);
      } else {
        echo '{"message":'.json_encode($messages).'}';
        die();
      }
    }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?假设没有语法错误.

javascript php ajax comet

5
推荐指数
1
解决办法
1926
查看次数

如何在不影响原始函数的情况下扩展(使用新名称)javascript 中的静态函数?

我在解决如何扩展静态函数 (momentjs) 以便我可以覆盖这些方法但不更改原始函数时遇到问题。

需要明确的是,我知道如何扩展moment的实例来覆盖函数,但我想直接扩展库,这样我就moment可以像 momentjs 一样使用自己的命名实例。

例如,我希望能够执行以下操作

extendedMoment().customFunction() //do something custom
extendedMoment().toString() //use customised toString() method
extendedMoment().format() //use the original momentjs method
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些复制原型等选项,但是编辑新extendedMoment功能的原型似乎会影响原始功能。

更新:@PatrickRoberts 在下面回答

javascript oop momentjs

5
推荐指数
1
解决办法
853
查看次数

如何查看测试 Angular 2 ErrorHandler 重写类

我已经成功地覆盖了@angular/core ErrorHandler,但是我正在尝试创建一个视图测试来断言它的行为,并且我遇到了未捕获的异常。尽管在运行时工作并在 TestBed 提供程序中进行设置,但覆盖处理程序似乎并未运行。

ng2-错误处理程序.ts:

import { ErrorHandler } from '@angular/core';
import { logger } from './logger';

export class Ng2ErrorHandler extends ErrorHandler {

  constructor(){
    super(false); // don't rethrow error
  }

  /* tslint:disable:no-any */
  public handleError(error: any) {
    super.handleError(error);
    logger.handleLoggedError(error, error.message);
  }
  /* tslint:enable:no-any */

}

export const NG2_ERROR_HANDLER_PROVIDER = {
  provide: ErrorHandler,
  useClass: Ng2ErrorHandler,
};
Run Code Online (Sandbox Code Playgroud)

ng2-error-handler.view.spec.ts:

import { Component } from '@angular/core';
import { NG2_ERROR_HANDLER_PROVIDER } from './ng2-error-handler';
import { TestBed, ComponentFixture } from '@angular/core/testing';
import { logger, …
Run Code Online (Sandbox Code Playgroud)

error-handling integration-testing typescript angular

5
推荐指数
0
解决办法
1258
查看次数

如何(重新)调用初始化对象的构造函数?

我正在编写一些代码,用于检查是否插入了特定的midi设备,如果不是代码,则每隔5秒重新检查一次,直到插入为止.

我的问题出现在检查设备列表中 - 外部库没有重新检查端口的功能,因为它只在类的构造函数中执行.

我能看到让我的代码重新检查设备列表的唯一方法是重新初始化类对象.

类对象在头文件中声明为ofxMidiIn midiIn;,因为它在cpp文件中全局使用.问题是,如果我在cpp中的一个函数内'重新声明',它似乎不会替换全局范围内的对象,即使它在本地很好.

用伪代码澄清:

在.h:

class foo {

    ofxMidiIn midiIn; //first initialization does a port scan

};
Run Code Online (Sandbox Code Playgroud)

在.cpp中:

void foo::setup(){
    midiIn.listPorts(); //if this fails the recheck is triggered every 5 secs
}


void foo::run(){
    //if setup failed then while (!recheck());
}

bool foo::recheck(){

    ofxMidiIn midiIn;
    midiIn.listPorts(); //this works in this (local) scope, but doesn't reassign midiIn globally

}
Run Code Online (Sandbox Code Playgroud)

c++ constructor scope initialization

4
推荐指数
1
解决办法
4818
查看次数

Javascript - 无法从嵌套函数访问本地范围对象

我试图让一个函数从另一个页面上的php文件中获取一个对象.我正在使用jQuery ajax函数来执行json抓取,这是正常的.问题是当我尝试从函数返回该对象时.

我第一次记录对象(在成功函数内)它在控制台中是正确的,但函数getGantt()返回的对象记录为"未定义".

如何从函数中获取此对象?

我的代码:

    function getGantt(requestNumber){
        var ganttObject;
        $.ajax({
               type: "POST",
               url: "get_gantt.php",
               data: {request_number: requestNumber},
               success: function(returnValue){
                     ganttObject = $.parseJSON(returnValue);
                    console.log(ganttObject); //this logs a correct object in the console

                }
        });
        return ganttObject;
    }

    $(function(){ //document ready function

        var requestNumber = $('#request_number').text();

        var ganttObject = getGantt(requestNumber);
        console.log(ganttObject); //this logs "undefined"

    }); //end document ready function
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery function local-variables

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

如何干净地访问jquery对象的直接后代?

我的js中有以下行

var description = jqref.children('.category_info').children('.description').children('p').html();
Run Code Online (Sandbox Code Playgroud)

这完全符合我的要求,虽然对我而言,感觉太笨重了,感觉就像我忽略了一个更好的选择方法.

我很确定我应该使用>直接子符号,但似乎无法以正常方式实现它,因为我已经在处理jquery对象.

javascript jquery selector descendant

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

C++类 - 如何将自定义类型的向量传递给函数

我正在尝试开发一个具有函数的类,该函数可以将项目的向量作为其参数.

如果我使用int类型的矢量或其他原语,我可以让它工作正常,但我无法使用对象向量.

例如:

在我的头文件中:

int influenceParticles(vector<Particle> particles);
Run Code Online (Sandbox Code Playgroud)

这就是我所追求的,但不会编译(错误陈述是"'Particle' was not declared in this scope").

particle.h文件已包含在此头文件的顶部.

澄清

这是给我错误的.h文件

#ifndef _PARTICLE_ATTRACTOR
#define _PARTICLE_ATTRACTOR

#include "ofMain.h"
#include "particle.h"


class ParticleAttractor {

    //private
public:

    ParticleAttractor(int posX, int posY); //constructor (void)

    int influenceParticles(vector<Particle> particles);

};


#endif 
Run Code Online (Sandbox Code Playgroud)

c++ parameters arguments class vector

0
推荐指数
1
解决办法
3466
查看次数