Angular2 http.post gets executed twice

后端 未结 3 2173
旧巷少年郎
旧巷少年郎 2020-12-03 02:26

I came across a weird issue where the Angular2\'s (RC1) Http service executes the http.post call twice. I\'ve debugged my app and I know for a fact this is not a click event

相关标签:
3条回答
  • 2020-12-03 03:01
    its happening because HTTP OPTIONS executed first, and you have to restrict unwanted HTTP method before executing your Logic, always use isset method,see example below
    
     if(isset($_POST))
     {
        $name = $_POST["name"];
        $country = $_POST["country"];
    
        $sql = 'INSERT INTO user values("' . $name . '","' . $country . '")';
    
                if ( $conn->query($sql)=== TRUE) 
                {
                    $outp =  "Inserted " .  $name . "  and  "  . $country;
                    echo json_encode($outp);
                } else {
                    echo json_encode("Error: " . $sql . "<br>" . $conn->error);
                }
            }
    
    
    here it will insert row in table only when its POST METHOD.
    
    0 讨论(0)
  • 2020-12-03 03:07

    This was happening to me because I have (key.enter)="someSubmitFunction()" on one of the input fields of a form. When I hit enter on this field the form would submit twice. Apparently, this wasn't needed. When I removed this, the form would still submit when I hit enter, but now only once.

    0 讨论(0)
  • 2020-12-03 03:10

    The http service returns a cold observable that get executed on every subscribe, you want to convert it to a hot observable that get only executed on the first subscribe and share the same value for subsequent subscribes.

    To convert it all you have to do is share it:

    return this._http.post(this.createURL(this.getCreateURL(), [], params), body, options)
    .map(res => this.handleObjectResponse(res))
    .share();
    
    0 讨论(0)
提交回复
热议问题